如何在 Pig 中使用 Avro 数据

Posted

技术标签:

【中文标题】如何在 Pig 中使用 Avro 数据【英文标题】:How to use Avro data in Pig 【发布时间】:2015-02-25 19:47:02 【问题描述】:

我正在尝试使用提供的“AvroStorage”加载功能将 Avro 数据文件加载到猪中。数据是从 python 脚本生成的,该脚本使用 python 的 avro 库将文本数据转换为 avro 格式。即使我只是尝试跑步

out = LOAD "path/to/file.avro" using AvroStorage();

我得到了错误

java.lang.ClassCastException: org.apache.avro.util.Utf8 cannot be cast to java.lang.String

我正在使用 avro 1.7.7 版来创建数据。

我不知道pig函数使用的是什么版本的avro,但是pig版本是0.12。

有人知道我为什么会收到这个错误吗?

【问题讨论】:

【参考方案1】:

你可以在 pig 中注册一个 jar

REGISTER <local path>/avro-1.7.7.jar;
out = LOAD "path/to/file.avro" using AvroStorage();

关于该错误,pig 0.12 版本中报告了一个错误,已修复 https://issues.apache.org/jira/browse/PIG-3297

【讨论】:

以上是关于如何在 Pig 中使用 Avro 数据的主要内容,如果未能解决你的问题,请参考以下文章

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

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

如何读取 CSV 并生成 json/avro 文件,其中 pig 按第一列的值分组?

如何在 Pig 中转换参数?

在 PIg 脚本中对 Avro 文件使用 UDF

无法通过在 Azure HDInsight 中运行的 piggybank.jar 使用 PIG 读取 Avro 文件