Rumah >pembangunan bahagian belakang >Golang >Tukar fail parket kepada struktur Golang dengan elemen bersarang
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.
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"` }
currid dan lptag kosong walaupun fail parket mempunyai nilai yang sah
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) } }
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!