我有三个表 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/