来自输入源的数据有不同的分隔符,例如 , OR ; .有时可能是,有时可能是; .但是 PigStorage 函数一次只接受一个参数作为分隔符。如何加载这种数据 [ 带分隔符 , OR ; ]
最佳答案
你能检查一下这是否适合你吗?
- 它将处理所有带有不同分隔符的输入文件
- 它也可以用不同的分隔符处理同一个文件。
您可以在字符类 [,:,]
中添加任意数量的分隔符
例子:
input1.txt
1,2,3,4
input2.txt
a-b-c-d
input3.txt
100:200:300:400
input4.txt
100,aaa-200:b
PigScript:
A = LOAD 'input*' AS line;
B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL(line,'(.*)[,:-](.*)[,:-](.*)[,:-](.*)')) AS (f1,f2,f3,f4);
DUMP B;
Output:
(1,2,3,4)
(a,b,c,d)
(100,200,300,400)
(100,aaa,200,b)
关于hadoop - 如何在 Pig latin 中每次加载具有不同分隔符的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26354949/