【发布时间】:2014-06-27 20:20:28
【问题描述】:
我有一个猪作业,它分析大量日志文件并生成一组属性和一组具有这些属性的 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 还很陌生,因此对于我的方法的任何帮助或一般性建议将不胜感激。
提前致谢。
【问题讨论】:
-
感谢您为我指明这个方向。虽然 PiggyBank 中的默认 MultiStorage 选项并不是我想要的,但我现在看到我想要做的事情应该可以通过自定义 StoreFunc 实现。我会看看源代码,看看我能想出什么。如果我能找到可用的解决方案,我会将其作为答案发布。
标签: hadoop apache-pig hdfs