首页 文章

如何使用Pig将数据存储在HDFS上的多个分区文件中

提问于
浏览
3

我有一个猪工作,分析大量的日志文件,并生成一组属性和一袋具有这些属性的ID之间的关系 . 我想将这种关系存储在HDFS上,但我希望以一种友好的方式对其他Hive / Pig / MapReduce作业进行操作,以便对数据或数据的子集进行操作而无需完全摄取我的猪工作的输出,因为这是一个大量的数据 .

例如,如果我的关系的架构是这样的:

relation: {group: (attr1: long,attr2: chararray,attr3: chararray),ids: {(id: chararray)}}

我真的希望能够对这些数据进行分区,将其存储在如下所示的文件结构中:

/results/attr1/attr2/attr3/file(s)

其中路径中的attrX值是组中的值,并且文件仅包含id . 这样我就可以轻松地对我的数据进行子集化,以便进行后续分析而无需重复数据 .

即使使用自定义StoreFunc,这样的事情是否可能?我是否应采取不同的方法来实现这一目标?

我对Pig很新,所以对我的方法的任何帮助或一般性建议都将不胜感激 .

提前致谢 .

1 回答

  • 1

    Multistore并不适合我尝试做的事情,但它证明了如何编写一个自定义StoreFunc来编写多个分区输出文件的一个很好的例子 . 我下载了Pig源代码并创建了我自己的存储函数,该函数解析了组元组,使用每个项构建HDFS路径,然后解析了一包ID,每行写入一个ID到结果文件中 .

相关问题