L'éditeur PHP Xinyi présentera comment convertir des fichiers parquet en structures Golang avec des éléments imbriqués. Parquet est un format de stockage en colonnes efficace et Golang est un langage de programmation puissant. Leur combinaison peut nous aider à mieux traiter et analyser de grandes quantités de données. En utilisant des bibliothèques et des techniques appropriées, nous pouvons facilement analyser les fichiers parquet dans des structures Golang et gérer les éléments imbriqués pour une meilleure organisation et manipulation des données. Cet article présentera en détail les étapes de mise en œuvre et les précautions pour aider les lecteurs à démarrer facilement.
J'essaie de lire un fichier parquet avec des tableaux/structures imbriquées en go en utilisant la bibliothèque xitongsys/parquet-go. Les données de la liste ne sont pas lues et aucune valeur n'est vue. Ci-dessous ma structure en 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 et lptag sont vides même si le fichier parquet a des valeurs valides
J'ai trouvé le package 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) } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!