如何使用PIG / HIVE / HBASE从文件中动态加载没有文本限定符的数据?

时间:2014-11-19 07:20:30

标签: hadoop hive hbase apache-pig

我的csv文件包含150列!它包含""作为文本限定符。如何使用""脚本删除引号(pig/hive/hbase dynamic)?同样,我有多个文件(50个csv文件具有不同的列)。如何从不同的文件中删除这些""

我尝试使用以下猪脚本在文件中添加2列:

A = LOAD 'hdfs://<hostname>:<port>/user/test/input.csv' AS line;
B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL(line,'"(.*)","(.*)"')) AS (id:int,name:chararray);
STORE B INTO '/user/test/output' USING PigStorage(',');

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

你能这样试试吗?

<强> input.txt中

"123","456","789"
"abc","def","ghi"

<强> PigScript:

A = LOAD 'input.txt' AS line;
B = FOREACH A GENERATE REPLACE(line,'\\"','') AS line1;
C = FOREACH B GENERATE FLATTEN(STRSPLIT(line1,'\\,',3));
D = FOREACH C GENERATE $0,$1,$2;
DUMP D;

<强>输出:

(123,456,789)
(abc,def,ghi)

在您的情况下,您可以将上面的第3行更改为STRSPLIT(line1,'\\,',150),其中150是列总数,您可以按$0,$1...$149

访问所有值