Apache Pig字符串截取實戰小例子

記錄一個Pig字符串截取的實戰小例子:

需求以下,從下面的字符串裏提取出第2列(冒號後面)的值:

java

Java代碼 複製代碼 收藏代碼c#

1 2  3 4
a:ab#c#d
a:c#c#d
a:dd#c#d
a:zz#c#d



若是是在java裏,方法可能有不少種,好比substring,或者split屢次等,在pig也大體如此,能夠使用SUBSTRING內置函數來完成,但散仙推薦使用下面的方式,這種方式比較靈活,適合大部分場景的數據提取,須要用到的2個函數以下:

(1)REGEX_EXTRACT('原始字符串','正則式',int類型的返回索引)

(2)STRSPLIT('原始字符串', '正則式', 限制返回的個數)


pig腳本寫法:
函數

Java代碼 複製代碼 收藏代碼spa

a = laod '/tmp/data' as (data:chararray)
//注意邏輯是,先獲取冒號後面的數據,而後split成tuple,再經過$1(下標訪問元素)獲取咱們須要的數據便可。
b = foreach a generate STRSPLIT (REGEX_EXTRACT (data, '(.*):(.*)', 2) ,'#',5).$0;

dump b;
相關文章
相關標籤/搜索