我有很多文件(> 100k),每个文件都有ctrl + M分隔的记录和\ n分隔。在每个字段中,数据是“管道”分隔的。 当我们使用PigStorage()时,Pig将ctrl + M视为行分隔符。 我尝试使用TextLoader(),它显示了相同的行为。 关于如何在Pig中运行此操作的任何建议? 在这种情况下,文件的预处理可能不可行。 如果您有任何建议,请告诉我。
示例数据:
abc|^~\&|1100|7G^M0|1|2|3|4|5^Mpqr|^^^00|82|L
最终输出(1行 - ^ M分隔符):
((abc,^~\&,1100,7G),(0,1,2,3,4,5)(pqr,^^^00,82,L))
答案 0 :(得分:0)
更新:
<强>输入强>
abc|^~\&|1100|7G^M0|1|2|3|4|5^Mpqr|^^^00|82|L
<强> PigScript:强>
A = LOAD 'input' AS (line:chararray);
B = FOREACH A GENERATE FLATTEN(STRSPLIT(line,'\\^M')) AS(col1:chararray,col2:chararray,col3:chararray);
C = FOREACH B GENERATE FLATTEN(TOBAG(col1,col2,col3));
D = FOREACH C GENERATE FLATTEN(STRSPLIT($0,'\\|'));
DUMP D;
输出
(abc,^~\&,1100,7G)
(0,1,2,3,4,5)
(pqr,^^^00,82,L)