performance - 如何将最左边的表缓存在内存中以用于配置单元中的左外连接
问题描述
我有一个大表(1Tb 数据)需要与一个小表(100k 记录)连接
SELECT st.id
FROM small_table st
LEFT JOIN large_table lt
ON st.id = lt.id
在上述情况下,我无法控制必须将哪个表缓存到内存中。我尝试使用 MAPJOIN 、 STREAMTABLE 提示,还尝试使用条件任务大小、小 tbale 大小等参数。因为小表在连接的最左侧,它没有被缓存到内存中
有没有办法控制需要缓存的表
注意:我无法更改表格位置或代码:
这里也不...
……也不在这里……
使用的参数:
set hive.execution.engine=tez;
set hive.tez.container.size=4096;
set hive.merge.mapredfiles=true;
set tez.shuffle-vertex-manager.min-src-fraction=0.25;
set tez.shuffle-vertex-manager.max-src-fraction=0.75;
set hive.exec.dynamic.partition.mode=nonstrict;
set tez.am.resource.memory.mb=3200 ;
set tez.am.java.opts=-server -Xmx3200m -Djava.net.preferIPv4Stack=true -XX:+UseNUMA -XX:+UseParallelGC -XX:+UseConcMarkSweepGC ;
SET hive.auto.convert.join=true;
set hive.auto.convert.join.noconditionaltask.size=288435456;
解决方案
推荐阅读
- php - 单击 PHP 中的项目时如何获取更多信息?
- javascript - 如何在 ExpressJS 中的 HTML 表单上添加值
- atom-editor - Atom 编辑器:Hashtag 创建括号 - JavaScript 编辑
- bash - 使用 perl 就地替换将软链接/符号链接更改为静态文件
- c++ - stod 转换一些 sig 无花果被切断
- keras - Keras 中的课程数量错误
- python - python浮点乘法 - 简单的数学不能正确输出
- angular - 我应该如何将在线帮助文档与现有的 Angular 5 应用程序集成?
- python-3.x - 试图在 scikit-image 中创建弧线是错误的
- python - 使用 rpyc 访问另一个文件中的类成员而无需导入