登录
首页 >  Golang >  Go问答

Apache/Arrow 如何解析 Parquet 文件中的 JSON 数据

来源:stackoverflow

时间:2024-03-13 08:06:26 262浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《Apache/Arrow 如何解析 Parquet 文件中的 JSON 数据》,文章讲解的知识点主要包括,如果你对Golang方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

我正在使用 apache arrow for go 来读取 parquet 文件。我的镶木地板文件的架构是:

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)

官方文档中根本没有示例。 预先感谢您。


正确答案


如果 json 有效负载已作为 json 字节数组/字符串存储在 parquet 中,那么您必须手动解析它并将其转换为结构。有一些helper functions可以处理json数据,但是看起来并没有在go中暴露出来。

如果您希望 parquet 将其作为结构自动处理,则必须在写入文件时将其存储为结构。

终于介绍完啦!小伙伴们,这篇关于《Apache/Arrow 如何解析 Parquet 文件中的 JSON 数据》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>