Hive 对于MAPJOIN,什么表大小足够小?

Hive 对于MAPJOIN,什么表大小足够小?,hive,Hive,如何确定表是否足够小,以进行MAPJOIN优化 我想我应该看看 du /misc/hdfs/user/hive/warehouse/my_table 如果低于RAM的50%(?5%),则使用MAPJOIN 我使用的是蜂巢0.10 hive.mapjoin.smalltable.filesize 默认值:25000000 小表的输入文件大小的阈值;如果文件大小小于此阈值,它将尝试将公共联接转换为映射联接 这是当前版本的Wiki,但我认为此设置可以追溯到0.10。感谢您提供的信息(和+1),但这

如何确定表是否足够小,以进行
MAPJOIN
优化

我想我应该看看

du /misc/hdfs/user/hive/warehouse/my_table
如果低于RAM的50%(?5%),则使用
MAPJOIN

我使用的是蜂巢0.10

hive.mapjoin.smalltable.filesize

默认值:25000000
小表的输入文件大小的阈值;如果文件大小小于此阈值,它将尝试将公共联接转换为映射联接


这是当前版本的Wiki,但我认为此设置可以追溯到0.10。

感谢您提供的信息(和+1),但这并不是我想要的;我想知道如何根据我的文件大小调整这个阈值。这个值就是文件大小。很难估计有多少任务RAM可用于此目的,这取决于映射任务中的其他运算符、连接了多少“小表”等。所有小表中使用的所有列都必须加载到RAM中。其他大内存消费者是映射联接哈希表和聚合哈希表。好消息是,两者实际上都可以在内存压力下“刷新”(代价是洗牌做更多的工作)。我建议试试看。请确保您的
hive.mapjoin.localtask.max.memory.usage必须适合这个小表,但这是本地的。