字符串连接在猪中不起作用

Posted

技术标签:

【中文标题】字符串连接在猪中不起作用【英文标题】:string concatenation not working in pig 【发布时间】:2014-10-10 12:27:10 【问题描述】:

我在 hcatalog 中有一个表,它有 3 个字符串列。当我尝试连接字符串时,出现以下错误:

A = LOAD 'default.temp_table_tower' USING org.apache.hcatalog.pig.HCatLoader() ;
B = LOAD 'default.cdr_data' USING org.apache.hcatalog.pig.HCatLoader();
c = FOREACH A GENERATE CONCAT(mcc,'-',mnc) as newCid;

无法使用导入解析 concat:[, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.]

无法将 org.apache.pig.builtin.CONCAT 的匹配函数推断为多个匹配或都不匹配。请使用显式演员表

问题的根本原因可能是什么?

【问题讨论】:

你用的是什么版本的猪?因为具有两个以上参数的 CONCAT 在 0.13 版本中可用。在以前的版本中,您必须使用 CONCTAT(CONCAT(mcc,'-'),mnc) 引用CONCAT,支持两个以上参数,CONCAT不支持多个参数 【参考方案1】:

可能有助于猪的连接

data1 包含:

(Maths,abc)
(Maths,def)
(Maths,ef)
(Maths,abc)
(Science,ac)
(Science,bc)
(Chemistry,xc)
(Telugu,xyz)

将架构考虑为子:Maths,Maths,Science....etc 和名称:abc,def,ef..etc

X = FOREACH data1 GENERATE CONCAT(sub,CONCAT('@',name));

X 的 O/P 为:

(Maths@abc)
(Maths@def)
(Maths@ef)
(Maths@abc)
(Science@ac)
(Science@bc)
(Chemistry@xc)
(Telugu@xyz)

【讨论】:

以上是关于字符串连接在猪中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

连接属性在 Azure ServiceBus 订阅触发的函数中不起作用

在猪中解析复杂的json?

在猪中正确加载日期时间

在猪中增加映射器

如何在猪中读取json数据?

多列组合在猪中唯一