将 avro 文件合二为一

Posted

技术标签:

【中文标题】将 avro 文件合二为一【英文标题】:combine avro files into one 【发布时间】:2014-09-18 16:16:37 【问题描述】:

我想使用 pig 将小型 avro 文件合并到一个 avro 文件中,保持相同的架构。

我尝试过这样做:

REGISTER avro-1.7.2.jar

a = load '$SOURCE' using org.apache.pig.piggybank.storage.avro.AvroStorage ();
store a into '$TARGET' using org.apache.pig.piggybank.storage.avro.AvroStorage (); 

但失败并出现以下错误:

ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1070: Could not resolve org.apache.pig.piggybank.storage.avro.AvroStorage using imports: [, org.apache.pig.builtin., org.apache.pig.impl.builtin.]

如何使用 pig 将小的 avro 文件合并到一个文件中?

【问题讨论】:

您的问题不是关于合并这两个文件,而是关于没有正确解析 AvroStorage()。您确定 avro jar 存在于正确的位置吗?也许指定 jar 的完全限定路径可能会有所帮助? 【参考方案1】:

首先,AvroStorage 是 piggybank 的一部分,所以你还需要注册 piggybank.jar。

REGISTER piggybank.jar

其次,使用AvroStorage请求额外的库所以需要注册json-simple-1.1.1.jar。

REGISTER json-simple-1.1.1.jar

第三,如果你想使用更新版本的 Avro,你需要 avro-mapred.jar

我的 Pig 脚本中有以下代码:

REGISTER lib/piggybank-0.13.0.jar;
REGISTER lib/avro-1.7.7.jar;
REGISTER lib/avro-mapred-1.7.7.jar;
REGISTER lib/json-simple-1.1.1.jar;

【讨论】:

以上是关于将 avro 文件合二为一的主要内容,如果未能解决你的问题,请参考以下文章

从 avro 文件将数据集转换为数据框

性能:Google Dataflow 将 avro 文件写入 GCS

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

Spark DataFrame 到 Avro 并将 AVRO 文件保存到 Cassandra 表

使用flume将avro文件上传到hdfs上

如何将 Avro 文件加载到具有“时间戳”类型的列的 BigQuery 表中