【发布时间】:2014-01-07 05:31:01
【问题描述】:
我正在尝试将以下 Hive 语句转换为 Pig:
max(substr(case when url like 'http:%' then '' else url end,1,50))
我对上述的猪声明是:
url_group = GROUP data by (uid);
max_substr_url= FOREACH url_group generate SUBSTRING(MAX(((Coalesce(data.url) matches '.*http:%.*') ? '' : Coalesce(data.url))), 0, 49);
对于某些数据,url 可以为空。因此,我编写了一个名为 Coalesce(String) 的猪 UDF,如果数据为空或为空,它将返回一个空字符串。如果数据不为空或不为空,则返回字符串。
上面的猪声明给我带来了很多麻烦,并尝试了 n 种不同的选项/方式,但没有任何效果。有人对如何实现这个有任何想法吗?请帮我。
提前致谢
【问题讨论】:
-
“很多麻烦”,“没有任何效果” - 更具体
-
Pig 对
matches使用Java 正则表达式,因此.*http:%.*中不需要%。另外,为什么你在 pig 中交换了 MAX 和子字符串?应该是MAX(SUBSTRING... -
好吧,我尝试了很多方法来让我的 Pig 语句正常工作,但还没有运气......
-
当我尝试 Max(Substring...) 时出现错误...所以我切换了它们。我正在寻找我需要对我的逻辑进行的建议/更改以使其正常工作。任何帮助是极大的赞赏。谢谢。
标签: hive apache-pig