我的文字输入中带有'|'分隔符为
0.0000|25000| |BM|BM901002500109999998|SZ
我使用PigStorage拆分了
A = LOAD '/user/hue/data.txt' using PigStorage('|');
现在,我需要根据其位置将 BM9010025001099999999 字段拆分为不同的字段,例如0-2 = BM-Field1,同样也要这样。
因此,完成此步骤后,我应该获得BM,90100、2500、10、9999998。
Pig脚本中有什么方法可以实现此目的,否则我打算编写一个UDF并将分隔符放在所需的位置。
谢谢。
最佳答案
您正在寻找SUBSTRING
:
A = LOAD '/user/hue/data.txt' using PigStorage('|');
B = FOREACH A GENERATE SUBSTRING($4,0,2) AS FIELD_1, SUBSTRING($4,2,7) AS FIELD_2, SUBSTRING($4,7,11) AS FIELD_3, SUBSTRING($4,11,13) AS FIELD_4, SUBSTRING($4,13,20) AS FIELD_5;
输出为:
dump B;
(BM,90100,2500,10,9999998)
您可以找到有关此功能的更多信息here.
关于hadoop - 在 pig 场内拆分字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30330145/