在pig字段中拆分字符

c8ib6hqw  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(402)

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

0.0000|25000|                    |BM|BM901002500109999998|SZ

我用pigstorage拆分了它

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

现在我需要根据位置将字段bm90100250010999998拆分为不同的字段,比如0-2=bm-field1等等。所以在这一步之后,我应该得到bm,901002500,10999998。在pig脚本中是否有任何方法可以实现这一点,否则我计划编写一个udf并在所需的位置放置分隔符。
谢谢。

pod7payv

pod7payv1#

你在找什么 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)

你可以在这里找到更多关于这个函数的信息。

wa7juj8i

wa7juj8i2#

我认为使用内置的udf regex\u extract\u all会更有效率。
您可以通过以下途径了解如何使用此自定义项:
http://pig.apache.org/docs/r0.8.1/piglatin_ref2.html#regex_extract_all
strsplit和regex都用piglatin提取

相关问题