通过在pig拉丁语中取出匹配的regex来过滤结果

qoefvg9y  于 2021-06-25  发布在  Pig
关注(0)|答案(1)|浏览(274)

我有一些包含url字符串的数据,这些数据都嵌入了一些不同的子字符串。
我的目标是获得一组从字符串中移除子字符串的结果:
例如。
原始数据:{id long,url string}
下面是一些示例rawdata:1,/213112341\u v1.html 243524254243\u v2.html 5,/000000\u v3.html 5,/000000\u v4.html
我想要的结果是:
1,/213112341.html 243524254243.html 5,/000000.html
所以基本上从url中删除subversion号(|v1 | | uv2 | v3 | | | uv4),并创建唯一的结果。
在Pig身上我该怎么做?
谢谢,

ekqde3dh

ekqde3dh1#

您最好的选择是执行以下操作:

FOREACH data GENERATE id, CONCAT(REGEX_EXTRACT(url, '(/?[0-9]*)_,',1),'.html');

编辑:
如果数据更复杂的话,试试下面的方法怎么样

FOREACH data GENERATE id, CONCAT(STRSPLIT(url, '_v[0-9]',1),'.html')

它应该在版本#之前获取所有内容,concat将.html添加回。如果之前的verson编号和之后的verison编号部分更复杂,您可以执行以下操作:

FOREACH data GENERATE id, CONCAT(FLATTEN(STRSPLIT(url, '_v[0-9]',2)))

相关问题