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