在Pig字段内拆分字符

时间:2015-05-19 15:38:35

标签: hadoop apache-pig udf

我有一个文字输入' |'分隔符为

0.0000|25000|                    |BM|BM901002500109999998|SZ

我使用PigStorage分割

A = LOAD '/user/hue/data.txt' using PigStorage('|');

现在我需要根据他们的位置将字段 BM901002500109999998 分成不同的字段,例如0-2 = BM - Field1,就像明智一样。 所以在这一步之后我应该得到BM,90100,2500,10,9999998。 Pig脚本中是否有任何方法可以实现此目的,否则我打算编写一个UDF并将分隔符放在所需的位置上。

感谢。

2 个答案:

答案 0 :(得分:3)

您正在寻找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.

答案 1 :(得分:2)

我认为使用内置的UDF REGEX_EXTRACT_ALL 会更有效率。
您可以从以下方面了解如何使用此UDF: