我是Hive的新手,正在尝试进行类似以下的搜索:
SELECT * FROM table1 WHERE col1 LIKE "%abcd%";
然而,当我这样做时,我收到以下错误:
编译语句时出错:FAILED:SemanticException [错误 10014]:第1:30行错误的参数'“%abcd%”':没有匹配的方法 for class org.apache.hadoop.hive.ql.udf.UDFLike with (地图,字符串)。可能的选择: FUNC (字符串,字符串)
看起来col1的类型错误,即地图的数据类型。有没有一种简单的方法可以在此列中搜索'%abcd%'模式?谢谢!
答案 0 :(得分:3)
这很可能是你想要的
select *
from mytable
where concat_ws(',',map_values(mymap)) like '%abcd%'
答案 1 :(得分:0)
您收到此错误,是因为您在map<string,string>
类型的列上像查询一样运行。在蜂巢中,如果列类型是map,那么您可以像这样直接通过键搜索值
select * from mytable where mycol['mykey'] = 'myvalue'
您也可以对此执行like
select * from mytable where mycol['mykey'] like '%myvalue%'
不确定密钥是否存在
select * from mytable where mycol['mykey'] is not null limit 1