在 hive 里,我有一张大table B
(约3亿行)和一个相对较小的表 A
. 我只是想 SELECT A.*, B.* FROM A LEFT JOIN B ON A.a_id = B.b_id
但是这个查询停留在map的50%,没有进展。我也试着在pyspark做同样的手术,但结果基本相同。两者 a_id
以及 b_id
是字符串,它们是 A
以及 B
分别是。为了执行连接,而不是选择 A.*
以及 B.*
,我只能选择当前分析所需的列。即使现在这个连接可以完成,谁能给我一些更深入的见解,为什么我有这个问题?只是表的大小对于工作内存来说太大了吗?
1条答案
按热度按时间xcitsw881#
既然你用的是
select *
,正在扫描所有表数据。同样,一个表的记录较少,因此没有分配适当的资源,因此由于资源不可用而卡住。启用map join和增加堆内存应该有助于解决这个问题。您可以通过在查询之前设置下面的属性来启用这些。