【问题标题】:How are the mappers decided while running a Hive Map Join?在运行 Hive Map Join 时如何决定映射器?
【发布时间】:2017-06-23 09:57:39
【问题描述】:

这在 Apache Hive 的 wiki 页面上有说明:

如果除了一个被连接的表之外的所有表都很小,则连接可以作为仅地图作业执行。查询

SELECT /*+ MAPJOIN(b) */ a.key, a.value

FROM a JOIN b ON a.key = b.key

不需要减速器。对于 A 的每个映射器,B 都被完全读取。

如果要连接的表中的一个很小,而另一个表大到足以耗尽单个映射器的资源,映射器的数量是如何确定的? 那么join会自动变成non-map join吗?

【问题讨论】:

    标签: join hive mapreduce hiveql hadoop2


    【解决方案1】:

    另一个表不能太大。
    它正在通过映射器进行流式传输。

    【讨论】:

    • 这让我又问了一个问题“你是不是建议另一个表被许多映射器接管?”
    • 小表被复制到所有映射器。大表正在通过映射器进行流式传输(每一行将仅通过单个映射器进行流式传输)。
    • 您能举例说明大表的流式传输吗?比如说,一个有 1000 条记录的表(小表)与大表(100 万条记录)连接时。
    • 你熟悉本地连接算法,具体来说是哈希连接吗?
    • 抱歉回复晚了,我有一些事情耽搁了。一段时间后会澄清我的其他疑问。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多