{'aaa', 'bbb', 'ccc'}
....
让我们假设上面的tupple加载了以下架构:
as (firstField:chararray, secondField:chararray, thirdField:chararray)
我想将元组存储在HDFS中,其路径基于第二个字段(上例中为'bbb')。所以上面的元组将存储在路径
中 /SomeBaseDir/bbb/testoutput.txt
任何帮助都将不胜感激。
答案 0 :(得分:0)
要加载文件,请使用以下命令。请记住,文件输入数据应该是制表符分隔的。如果您使用任何其他分隔符(如逗号),则更改PigStorage功能中的参数传递。它应该是PigStorage(',')
A = load '/home/abhishek/Work/pigInput/data' using PigStorage('\t') as (firstField:chararray, secondField:chararray, thirdField:chararray);
现在,为了简单地使用第二个元素:
result = foreach A generate secondField;
结果
dump result
('bbb')
您可以使用以下命令
存储它store result into 'provide the path';
答案 1 :(得分:0)
我认为你想使用MultiStorage(https://pig.apache.org/docs/r0.8.1/api/org/apache/pig/piggybank/storage/MultiStorage.html)。这应该做你想要的。指定基本路径,然后指定子目录应基于的字段。
答案 2 :(得分:0)
PigLatin中的SPLIT操作员可以在这里完成工作。
对于加载的输入数据(in),可以将其拆分为不同的输出变量,如下所示:
loadedData = load ' ' as (.. ,somefield, ) using ... ;
SPLIT loadedData INTO
segmentA IF (somefield=='A'),
segmentB IF (somefield=='B'),
OtherSources OTHERWISE;
store segmentA into 'hdfs://<path for data segmentA >' using ....;
store segmentB into 'hdfs://<path for data segmentB >' using ....;