我正在使用阿帕奇箭来读取拼花文件。我的拼花文件的架构是:
time_stamp: int64
file_name: byte_array
offset: int32
meta_data: byte_array这些信息是由fmt.Println(rdr.MetaData().Schema)打印的。虽然列metadata是一个字节数组,但它实际上是一个json字符串,如下所示:
{
"dataType": "left",
"features": [
{
"feature_name": "dHash",
"feature_val": "0000011000000111000001110010011100011111000101110000010100000101"
}
],
"pipelineVersion": "0.0"
}那么,如何将这些信息解析为一个结构呢?我发现了以下读取拼花文件的方法,但似乎没有模式的参数:
mem := memory.NewCheckedAllocator(memory.DefaultAllocator)
filename := "parquet file path"
rdr, _ := file.OpenParquetFile(filename, false, file.WithReadProps(parquet.NewReaderProperties(mem)))
arrowRdr, _ := pqarrow.NewFileReader(rdr, pqarrow.ArrowReadProperties{}, mem)
tbl, _ := arrowRdr.ReadTable(context.Background())
defer tbl.Release()
chunk0 := tbl.Column(0).Data().Chunk(0)
fmt.Println(chunk0)在官方医生中根本没有任何例子。提前谢谢你。
发布于 2022-05-24 08:02:58
该信息由fmt.Println(rdr.MetaData().Schema)打印。尽管它说列元数据是一个字节数组,但它实际上是一个json字符串,如下所示:
如果json有效负载已作为json字节数组/字符串存储在parquet中,则必须解析它并手动将其转换为struct。有一些辅助函数可以处理json数据,但看起来它们并不是在go中公开的。
如果您想让拼板自动地作为一个结构来处理它,那么在编写文件时必须将它作为一个结构来存储。
https://stackoverflow.com/questions/72356317
复制相似问题