Tukar fail parket kepada struktur Golang dengan elemen bersarang

王林
Lepaskan: 2024-02-10 19:10:08
ke hadapan
767 orang telah melayarinya

将 parquet 文件转换为带有嵌套元素的 Golang 结构

Editor PHP Xinyi akan memperkenalkan cara menukar fail parket kepada struktur Golang dengan elemen bersarang. Parket ialah format storan lajur yang cekap, dan Golang ialah bahasa pengaturcaraan yang berkuasa Menggabungkannya boleh membantu kami memproses dan menganalisis sejumlah besar data. Dengan menggunakan perpustakaan dan teknik yang sesuai, kami boleh menghuraikan fail parket dengan mudah ke dalam struktur Golang dan boleh mengendalikan elemen bersarang untuk organisasi dan manipulasi data yang lebih baik. Artikel ini akan memperkenalkan langkah pelaksanaan dan langkah berjaga-jaga secara terperinci untuk membantu pembaca bermula dengan mudah.

Kandungan soalan

Saya cuba membaca fail parket dengan tatasusunan/struktur bersarang dalam go menggunakan perpustakaan xitongsys/parket-go. Data senarai tidak dibaca dan tiada nilai dilihat. Di bawah adalah struktur saya di golang

type Play struct {
    SID            string   `parquet:"name=si, type=BYTE_ARRAY, convertedtype=UTF8, encoding=PLAIN_DICTIONARY, repetitiontype=OPTIONAL" json:"si,omitempty"`
    TimeStamp      int      `parquet:"name=ts, type=INT64, repetitiontype=OPTIONAL" json:"ts,omitempty"`
    SingleID       int      `parquet:"name=sg, type=INT64, repetitiontype=OPTIONAL" json:"sg,omitempty"`
    PID            int      `parquet:"name=playid, type=INT64, repetitiontype=OPTIONAL" json:"playid,omitempty"`
    StartTimeStamp string   `parquet:"name=startts, type=BYTE_ARRAY,repetitiontype=OPTIONAL"`
    Price          []Price1 `parquet:"name=price, type=LIST, repetitiontype=REQUIRED" json:"price,omitempty"`
}

type Price1 struct {
    CurrID int    `parquet:"name=currId, type=INT64, repetitiontype=REQUIRED" json:"currId,omitempty"`
    LPTag  string `parquet:"name=lptag, type=BYTE_ARRAY,convertedtype=UTF8, repetitiontype=REQUIRED" json:"lptag,omitempty"`
    LPrice Money  `parquet:"name=lpmoney, type=STRUCT" json:"lpmoney,omitempty"`
}

type Money struct {
    AdmCurrCode  string `parquet:"name=admCC, type=BYTE_ARRAY, repetitiontype=OPTIONAL" json:"admCC,omitempty"`
    AdmCurrValue string `parquet:"name=admCV, type=BYTE_ARRAY" json:"admCV,omitempty"`
}
Salin selepas log masuk

currid dan lptag kosong walaupun fail parket mempunyai nilai yang sah

Penyelesaian

Saya jumpa pakej github.com/segmentio/parquet-go包可以正确读取文件。您需要坚持使用 github.com/xitongsys/parquet-go?

package main

import (
    "fmt"

    "github.com/segmentio/parquet-go"
)

type Play struct {
    SID            string  `parquet:"si"`
    TimeStamp      int     `parquet:"ts"`
    SingleID       int     `parquet:"sg"`
    PID            int     `parquet:"playid"`
    StartTimeStamp string  `parquet:"startts"`
    Price          []Price `parquet:"price,list"`
}

type Price struct {
    CurrID int    `parquet:"currId"`
    LPTag  string `parquet:"lptag"`
    LPrice Money  `parquet:"lpmoney"`
}

type Money struct {
    AdmCurrCode  string `parquet:"admCC"`
    AdmCurrValue string `parquet:"admCV"`
}

func main() {
    rows, err := parquet.ReadFile[Play]("s3.parquet")
    if err != nil {
        panic(err)
    }

    for _, c := range rows {
        fmt.Printf("%+v\n", c)
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Tukar fail parket kepada struktur Golang dengan elemen bersarang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!