这是我的Pig脚本和输入数据,当执行DUMP F1时,输出是正确的,但是当执行DUMP F2时,输出是() - 似乎是空的,输入数据或代码有什么问题?
我希望DUMP F2的输出为(1),(3),(5),(12)。
hadoop fs -text input.txt
({(3),(4),(1),(2),(7),(5),(6)},{(1),(3),(5),(12)})
-- ({(3),(4),(1),(2),(7),(5),(6)},{(1),(3),(5),(12)})
A = load 'input.txt' AS (B1:bag{T:tuple(val:int)},B2:bag{T:tuple(val:int)});
F1 = foreach A generate B1;
F2 = foreach A generate B2;
DUMP F1;
DUMP F2;
output of DUMP F1:
({(3),(4),(1),(2),(7),(5),(6)})
output of DUMP F2:
()
答案 0 :(得分:1)
默认情况下,LOAD会查找制表符(\ t)分隔数据。您可以在input.txt中使用tab作为分隔符,也可以使用interest delimiter use right函数来使用USING子句加载数据。
参考:http://chimera.labs.oreilly.com/books/1234000001811/ch05.html#comments
将input.txt的内容如下所示并尝试执行脚本。您应该能够看到F2的转储结果。
input.txt:
{(3),(4),(1),(2),(7),(5),(6)} {(1),(3),(5),(12)}