0

我有一个带有“|”的文本输入 分隔符为

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 并将分隔符放在所需的位置。

谢谢。

4

2 回答 2

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)

您可以在此处找到有关此功能的更多信息。

于 2015-05-19T15:58:28.440 回答
2

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

于 2015-06-03T12:43:22.343 回答