如何使用 PIG 将 Avro 格式存储在 HDFS 中?

Posted

技术标签:

【中文标题】如何使用 PIG 将 Avro 格式存储在 HDFS 中?【英文标题】:How to store Avro format in HDFS using PIG? 【发布时间】:2015-04-08 13:55:31 【问题描述】:

处理输入数据后,我有一个 JAVA 对象。我已经创建了用于将对象存储在 avro 文件中的 avro 模式。我一直坚持使用模式将对象写入 HDFS。谁能指导我使用 PIG 脚本和相应的 UDF 编写对象的过程?

【问题讨论】:

【参考方案1】:

如果您使用 Java,我想您正在使用 UDF。

因此,您只需将 UDF 的结果作为猪元组返回。

然后您就可以与准备存储的数据建立关系。

最后你可以通过 AvroStorage 使用 STORE 命令了。

【讨论】:

有什么方法可以将 JAVA 对象转换为猪元组?另外,您可以分享使用 avro 模式文件存储元组的语法吗?我一直在寻找将 avrostorage 与模式文件一起使用的正确语法,但找不到它:| 我无法将 JAVA 对象转换为元组,因为 JAVA 对象非常复杂。它涉及listmap、用户定义的对象(派生自其他类)和pig不支持用户定义的类:| 当然可以,将列表设置为元组,将地图设置为猪地图......然后将所有结构存储在最终元组中(即通过您的 udf 返回) 用户定义的类、结构呢?

以上是关于如何使用 PIG 将 Avro 格式存储在 HDFS 中?的主要内容,如果未能解决你的问题,请参考以下文章

Pig - 读取存储为 Avro 的 Hive 表

pig-avro:如何自定义方式,他们 avro 存储加载文件

使用 Java 将 Json 对象转换为 Parquet 格式而不转换为 AVRO(不使用 Spark、Hive、Pig、Impala)

使用 Pig 脚本将文本文件转换为 avro

Pig SchemaParseException:无法重新定义:

从 ES 加载数据并使用 pig 在 HDFS 中存储为 avro