sql - 忽略 hive 查询中具有 NULL 连接列的行

标签 sql hive null

我有三个表 A、B 和 C。A 有 10 亿条记录,B 有 1000 万条记录,C 有 500 万条记录。 我的查询就像

选择* 从表A a.id=b.id 上的左外连接 tableB b 左外连接 tableC c on b.id=c.id;

第一次加入后,我将拥有超过 9.9 亿个 NULL b.id 列。现在,表 C 上的第二个连接将需要处理所有 9.9 亿个 NULL 行 (b.Id),这会导致一个 reducer 加载很长时间。有没有办法可以避免带有 NULL 连接列的行?

最佳答案

我们使用 rand() 来表示 NULL ;所以我们的加入条件是

coalesce(b.id, rand()) = c.id

因此空值是由它自己分配的,但我想知道为什么 skewjoin 设置没有帮助(我们已经尝试使用 skewjoin enable 来合并(b.id, 'SomeString') = c.id )

关于sql - 忽略 hive 查询中具有 NULL 连接列的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47094390/

相关文章:

sql - 如何在SQL函数中计算不同的趋势线类型

apache-spark - Dataproc 分区列中的特殊字符

hadoop - Apache Kylin 无法找到 HBase 公共(public)库

null - __null 在 g++ 中定义在哪里?

javascript - 错误: A valid React element (or null) must be returned (Checked Return() and Render())

sql - NULL 有数据类型吗?

mysql - 如何使用GROUP BY获取每个组中的最新记录?

mysql - 我的 MySQL 查询有什么问题?

sql - oracle sql 按偏好搜索

mysql - 如何使用 sqoop 将 JSON 字段数据从 mySql 服务器导入到 Hive 表中