hadoop - 如何使用 Pig 脚本生成嵌套的 Avro 字段?

标签 hadoop apache-pig

我是 Pig 新手,我的输入数据格式如下

Record1:
{
  label:int,
  id: long
},
Record 2:
{
 ...
}
...

我想要的输出是得到

Record 1:
{
  data:{
    label:int,
    id:long
  }
}, 
Record 2:
{
  ...
}
...

我试过:

result = FOREACH input GENERATE (id, label) AS data;

但这会导致嵌套的元组结构如下所示:

Record 1:
{
  data:{
   TUPLE_1:{
      label:int,
      id: long
   }
  }
}

我怎么能去掉另一个袋子“TUPLE_1”,看起来我错过了一个微不足道的设置。

最佳答案

您可能需要在存储数据时指定模式。 如果您使用 org.apache.pig.piggybank.storage.avro.AvroStorage,它可以将模式定义作为参数。

result = FOREACH input GENERATE label:int, id:long;
STORE result INTO 'result.avro' USING org.apache.pig.piggybank.storage.avro.AvroStorage('schema', '{"type": "record","name": "data","fields": [{"name": "label","type": "int"},{"name": "id", "type": "long"}]}');

关于hadoop - 如何使用 Pig 脚本生成嵌套的 Avro 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22416961/

相关文章:

hadoop - 如何使用 Flume 在源上执行预处理并在 hdfs 接收器中保留真实文件名

hadoop - Giraph、Hadoop、Spark 和 Cassandra

regex - 在 Apache Pig 中使用正则表达式处理日期

hadoop - 养 pig 运算符(operator)的逻辑计划和物理计划

hadoop - 没有 yarn 映射减少工作?

hadoop - HIVE:在 HDFS 中分区后创建空桶

hadoop - 图像的 Avro 文件类型?

java - 如何在java中运行pentaho pig作业

hadoop - Apache Pig 类型类型转换

hadoop - Pig - 错误 1045 : AVG as multiple or none of them fit. 请使用显式转换