猪拉丁加载ctrl + M分隔文本

时间:2015-02-26 23:24:06

标签: apache-pig delimited-text

我有很多文件(> 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))

1 个答案:

答案 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)