美文网首页
HIVE 处理非等值连接

HIVE 处理非等值连接

作者: 叫我老村长 | 来源:发表于2020-05-02 21:09 被阅读0次

HIVE 处理非等值连接(join.... on .... like ....)

有一个需求是判断一个表中的一个字符串字段是否是另外一个表中一个字符串字段的子串;

mysql实现方式:

SELECT *
FROM table1
RIGHT JOIN table2
ON table2.x LIKE CONCAT('%' , table2.y , '%')
用以上代码放到HIVE中执行,发现报错,原因是HIVE不支持非等值连接。

可以用以下方式来处理HIVE不支持非等值连接:

SELECT *
FROM table1
RIGHT JOIN table2
ON(TRUE)
WHERE LOCATE(table1.y,table2.x)

备注:1. mysql 中字符串的连接不能用加号(+)实现,可以用 CONCAT() 函数实现。

使用方法:CONCAT(str1 , str2 , str3 , .......):将str1、str2、str3....等子串连接在一起。

       2. 使用 LOCATE(substr , str) 函数,如果包含,则返回 >0 的数,否则返回0。

以上HIVE可能会报错:Error: java.lang.RuntimeException: Hive Runtime Error while closing operators: java.lang.Integer cannot be cast to java.lang.Boolean。

改成如下即可运行。

SELECT *
FROM table1
RIGHT JOIN table2
ON(TRUE)
WHERE LOCATE(table1.y,table2.x)>0
问题解决。

相关文章

  • HIVE 处理非等值连接

    HIVE 处理非等值连接(join.... on .... like ....) 有一个需求是判断一个表中的一个字...

  • Hadoop-HIVE3

    HIVE jion 语句 只支持等值连接,不支持非等值连接。 内连接 只有进行连接的两个表中都存在与连接条件相匹配...

  • Hive 处理非等值连接(join.... on .... li

    有一个需求是判断一个表中的一个字符串字段是否是另外一个表中一个字符串字段的子串;mysql实现方式: 用以上代码放...

  • 多表查询

    等值连接 表别名 多表等值连接 自然连接、USING子句、ON子句 自关联 非等值连接 等值连接   其中sele...

  • Hive 关联

    Hive Join特殊点 1.标准SQL是支持对连接关键词进行非等值连接的,但是在hive中不支持,同时也不支持在...

  • 查询

    连接查询 1.等值连接 连接符号为= 出现的列成为连接字段 2.非等值连接 非= 3.交叉连接 (非限制连接) 不...

  • 20 多表查询的分类

    多表查询的分类/* 角度1:等值连接 vs 非等值连接 角度2:自连接 vs 非自连接 角度3:内连接 ...

  • 51cto赵强HADOOP学习(十六)hive的数据查询

    简单查询 查询的语法 过滤和排序 在查询中使用过滤 在查询中使用排序 Hive的表连接 等值连接 不等值连接 外连...

  • 非等值连接

  • MySQL中的多表连接查询

    多表连接分为交叉连接,内连接,外连接,自连接。连接条件分为等值连接,非等值连接(区别就是连接符号是否是“=”) 学...

网友评论

      本文标题:HIVE 处理非等值连接

      本文链接:https://www.haomeiwen.com/subject/vrylghtx.html