我知道hive map side join使用内存。我可以使用SSD而不是内存吗?我想通过将维度表放在SSD上来进行mapside连接。可能吗?
我将通过向您解释Hadoop分布式缓存来尝试回答您的问题:
DistributedCache是Map-Reduce框架提供的用于缓存文件的工具( 的 在你的情况下,它是你想加入的蜂巢表 强> )应用程序需要。
DistributedCache假定通过URL指定的文件已存在于FileSystem上( 的 这是你的SSD或硬盘 强> )在URL指定的路径上,并且可由群集中的每台计算机访问。
具有讽刺意味的是,决定是否放置地图的是hadoop框架工作 内存(RAM / YARN)或SSD / HDD中的文件,具体取决于映射文件 尺寸。
虽然默认情况下,要在地图连接中使用的表的最大大小(作为小表)是1,000,000,000字节(大约1 GB),但您也可以通过hive set属性示例手动增加此大小:
set hive.auto.convert.join.noconditionaltask = true;
set hive.auto.convert.join.noconditionaltask.size = 2000000000;
在该节点上执行作业的任何任务之前,框架将将必要的文件复制到从属节点。它的效率源于这样一个事实,即每个作业只复制一次文件,并且能够缓存未在存档上存档的存档。
您可以在此链接上找到有关分布式缓存的更多信息
https://hadoop.apache.org/docs/r2.6.3/api/org/apache/hadoop/filecache/DistributedCache.html
https://hadoop.apache.org/docs/r1.2.1/api/org/apache/hadoop/filecache/DistributedCache.html