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

Posted

技术标签:

【中文标题】pig-avro:如何自定义方式,他们 avro 存储加载文件【英文标题】:pig-avro: how to customize the way, the avrostorage loads a file 【发布时间】:2014-03-11 12:26:58 【问题描述】:

我有一个要求,我们需要自定义使用 avrostorage 在 pig 中加载文件的方式:

例如,我有一个具有以下架构的 avro 文件:

"namespace": "avroColorCount",
 "type": "record",
 "name": "User2",
 "fields": [
     "name": "name", "type": "string",
     "name": "content", "type" :  "bytes" 
 ]

现在如果我使用下面的命令它工作正常:

x = load 'sample.avro' USING AvroStorage() AS (name: chararray, content: bytearray);

但是,如果我只想加载“内容”(第二列),我该怎么做呢?

如果我给,

x = load 'sample.avro' USING AvroStorage() AS (content: bytearray);

它给了我错误:

ERROR 1031: Incompatable schema: left is "content:bytearray", right is "name: chararray, content: bytearray"

我知道这可以通过 FILTER 来完成。

但我们的要求是一步一步获得第二列。

这可能吗?

提前谢谢...

【问题讨论】:

【参考方案1】:

下面的代码解决了它..

x = LOAD 'sample.avro' USING AvroStorage('"type":"record","name":"User2","fields":["name":"content","type":"bytearray"]');

【讨论】:

以上是关于pig-avro:如何自定义方式,他们 avro 存储加载文件的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义列名将 Avro 文件加载到具有嵌套记录的 GCS

今日指数项目之行情数据业务开发

我可以从 Avro 模式定义中获取 Scala 案例类定义吗?

如何跨团队共享 avro 模式定义

如何以图形方式表示和操作 apache avro 架构

Thrift、Avro、Protocolbuffers - 他们都死了吗?