我正在尝试(内部)使用 RLIKE 加入 Hive 中的两个表。
select a.col_x, b.col_y, count(*) as n
from tableA a
join tableB b
ON a.col_x RLIKE concat('^', b.col_z)
group by a.col_x, b.col_y
(tableA 约 100M 记录,tableB 约 1k 记录)
此查询不起作用,因为 Hive 仅支持相等连接。
我将不等式移至where
子句(参考:连接表时 Hive 查询中的错误)。
select a.col_x, b.col_y, count(*) as n
from tableA a , tableB b
WHERE a.col_x RLIKE concat('^', b.col_z)
group by a.col_x, b.col_y
第二种方法不返回任何错误。但是,它运行非常非常缓慢。运行大约 1 小时但仍然无法获得输出(通常,当我使用相等连接ON a.col_x RLIKE b.col_z
时,它只需要不到 5 分钟)。
任何解决方案(使用 Hive 或其他 hadoop 应用程序)都值得赞赏。