pig拉丁文加载ctrl+m分隔文本

nmpmafwu  于 2021-06-25  发布在  Pig
关注(0)|答案(1)|浏览(373)

我有很多文件(>100k),每个文件都有ctrl+m分隔的记录。在每个字段中,数据以“管道”分隔。当我们使用pigstorage()时,pig将ctrl+m作为行分隔符。我尝试使用textloader(),它显示了相同的行为。关于如何在Pig身上运行这个有什么建议吗?在这种情况下,文件的预处理可能不可行。如果你有什么建议,请告诉我。
样本数据: |^~\&|1100|7G^M0|1|2|3|4|5^Mpqr|^^^00|82|L 最终输出(1行-^m分隔符): ((,^~\&,1100,7G),(0,1,2,3,4,5)(pqr,^^^00,82,L))

x8diyxa7

x8diyxa71#

更新:
输入:

abc|^~\&|1100|7G^M0|1|2|3|4|5^Mpqr|^^^00|82|L

Pig手稿:

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)

相关问题