簡體   English   中英

如何使用 golang apache 箭頭庫讀取鑲木地板的重復字段?

[英]How can I use golang apache arrow library to read repeated field for parquet?

我正在使用 apache 箭頭 golang 庫來讀取鑲木地板。 沒有重復的列似乎很簡單,但我怎樣才能閱讀重復的字段?

對於讀取 Parquet 中的重復字段,實際上有兩個答案:復雜的方法和簡單的方法。

簡單的方法是使用pqarrow package 並直接讀入某種箭頭列表數組,讓復雜的事情為您處理。 https://pkg.go.dev/github.com/apache/arrow/go/v10@v10.0.1/parquet/pqarrow

要以復雜的方式閱讀它們,您必須了解重復和定義級別以及 Parquet 如何使用它們。 我不想在這里解釋它們,而是要向您指出 Apache Arrow 博客上的精彩文章: https://arrow.apache.org/blog/2022/10/08/arrow-parquet- encoding-part-2/解釋了如何解碼定義和重復級別(是的,它在 Parquet 的 Rust 實現的上下文中,但基本概念與 Go 實現相同)。

所有 ColumnChunkReader 類型都允許您在其ReadBatch方法中檢索那些 Definition 和 Repetition 級別。 例如看看https://pkg.go.dev/github.com/apache/arrow/go/v10@v10.0.1/parquet/file#Float32ColumnChunkReader.ReadBatch

當您調用ReadBatch時,您可以傳遞一個[]int16作為定義級別和要與數據一起填充的重復級別,然后您可以使用它們相應地解碼重復字段。 就個人而言,我更喜歡使用pqarrow package 為您完成,但有時您確實需要精細訪問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM