如何使用pig在hdfs上的多个分区文件中存储数据

h6my8fg2  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(270)

我有一个pig任务,它分析大量的日志文件,并在一组属性和一包具有这些属性的id之间生成一个关系。我希望将这种关系存储在hdfs上,但我希望这样做的方式对其他hive/pig/mapreduce作业操作数据或数据子集是友好的,而不必摄取pig作业的全部输出,因为这是一个很大的数据量。
例如,如果我的关系模式类似于:

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

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

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

其中路径中的attrx值是组中的值,并且文件仅包含id。这将允许我轻松地将数据子集,以便在不复制数据的情况下进行后续分析。
即使使用自定义的storefunc,这样的事情也可能发生吗?我是否应该采取不同的方法来实现这个目标?
我是一个新的Pig,所以任何帮助或一般建议,我的方法将不胜感激。
提前谢谢。

nqwrtyyt

nqwrtyyt1#

multistore并不是一个完美的例子,但它证明了如何编写一个自定义storefunc来编写多个分区输出文件。我下载了pig源代码并创建了自己的存储函数,该函数解析组元组,使用每个项构建hdfs路径,然后解析id包,将每行一个id写入结果文件。

相关问题