Heim >Backend-Entwicklung >Golang >Konvertieren Sie die Parkettdatei in eine Golang-Struktur mit verschachtelten Elementen
PHP-Editor Xinyi stellt vor, wie man Parkettdateien in Golang-Strukturen mit verschachtelten Elementen umwandelt. Parquet ist ein effizientes spaltenorientiertes Speicherformat und Golang ist eine leistungsstarke Programmiersprache. Durch die Kombination dieser beiden Formate können wir große Datenmengen besser verarbeiten und analysieren. Durch die Verwendung geeigneter Bibliotheken und Techniken können wir Parquet-Dateien problemlos in Golang-Strukturen analysieren und verschachtelte Elemente für eine bessere Organisation und Manipulation von Daten verarbeiten. In diesem Artikel werden die Implementierungsschritte und Vorsichtsmaßnahmen im Detail vorgestellt, um den Lesern den Einstieg zu erleichtern.
Ich versuche, eine Parquet-Datei mit verschachtelten Arrays/Strukturen in go mithilfe der xitongsys/parquet-go-Bibliothek zu lesen. Die Listendaten werden nicht gelesen und es werden keine Werte angezeigt. Unten ist meine Struktur in 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 und lptag sind leer, obwohl die Parkettdatei gültige Werte hat
Ich habe das github.com/segmentio/parquet-go
包可以正确读取文件。您需要坚持使用 github.com/xitongsys/parquet-go
-Paket gefunden?
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) } }
Das obige ist der detaillierte Inhalt vonKonvertieren Sie die Parkettdatei in eine Golang-Struktur mit verschachtelten Elementen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!