php小編新一將介紹如何將 parquet 檔案轉換為帶有巢狀元素的 Golang 結構。 Parquet 是一種高效的列式儲存格式,而 Golang 是一種強大的程式語言,將它們結合起來可以幫助我們更好地處理和分析大量的資料。透過使用適當的函式庫和技術,我們可以輕鬆地將 parquet 檔案解析為 Golang 的結構,並且可以處理巢狀的元素,從而更好地組織和操作資料。本文將詳細介紹實現的步驟和注意事項,幫助讀者輕鬆上手。
我正在嘗試使用 xitongsys/parquet-go 庫讀取 go 中帶有嵌套數組/結構的鑲木地板檔案。列表資料沒有被讀取,也沒有看到值。下面是我在 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"` }
即使parquet 檔案具有有效值,currid 和lptag 仍為空
我發現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) } }
以上是將 parquet 檔案轉換為帶有巢狀元素的 Golang 結構的詳細內容。更多資訊請關注PHP中文網其他相關文章!