我注意到,当我介绍一个' SPLIT'时,猪工作中的地图制作者数量增加了一倍。和一个' COGROUP'装载后在猪脚本中的声明。 它是否正确?有谁知道为什么会这样?
我使用PigStorage加载数据集:
A = LOAD 'test.csv' USING PigStorage;
cat test.csv
A 123
A 345
B 234
B 123
然后我使用SPLIT将数据集拆分为两个关系(使用过滤器的结果相同)。然后我将两个关系合并为一个,然后存储它。
SPLIT A INTO AA IF $0 == 'A', AB IF $0 == 'B';
CG = COGROUP AA BY $1, AB BY $1;
STORE CG INTO 'cg' USING PigStorage();
当我这样做时,我可以从我的(本地)输出中看到以下行:
Success!
Job Stats (time in seconds):
JobId Alias Feature Outputs
job_local_0001 A,AA,AB,CG COGROUP /test/cg,
Input(s):
Successfully read records from: "/test/test.csv"
Successfully read records from: "/test/test.csv"
输出(一个或多个): 成功将记录存储在:" / test / cg"
因此看起来数据被读取两次。实际上,我可以看到映射器的数量在群集上翻倍。
导致这种行为的原因是什么?有没有办法避免它,或者它是否有充分的理由让我失踪?
答案 0 :(得分:0)
这取决于您如何使用AA,AB以及如何运行脚本。
dump AA; dump AB;
,则会有两个作业。store AA into '...'; store AB into '...';
,那么也会有两个作业。但是,如果您在脚本中编写store AA into '...'; store AB into '...';
并使用Pig运行此脚本(grunt中的不是),则只会有一个作业。
答案 1 :(得分:0)
这将避免双文件读取
ng-view