Hadoop 为什么加入蜂巢的时间太长?
我运行的代码基本上是这样的:Hadoop 为什么加入蜂巢的时间太长?,hadoop,hive,mapreduce,yarn,tez,Hadoop,Hive,Mapreduce,Yarn,Tez,我运行的代码基本上是这样的: Create table abc as select A.* from table1 A Left outer join table2 B on A.col1=B.col1 and A.col2=B.col2; 表1中的记录数=7009102 表2中的记录数=1787493 我的脚本中有6个类似的查询,但我的脚本被困在第4个这样的查询中。我试着通过tez和mapreduce运行,但两者都有相同的问题 在mapreduce中,即使在一小时后,它仍停留在map
Create table abc as
select A.* from
table1 A
Left outer join
table2 B
on
A.col1=B.col1 and A.col2=B.col2;
表1中的记录数=7009102
表2中的记录数=1787493
我的脚本中有6个类似的查询,但我的脚本被困在第4个这样的查询中。我试着通过tez和mapreduce运行,但两者都有相同的问题
在mapreduce中,即使在一小时后,它仍停留在map 0%和reduce 0%位置。没有减速器
在Tez,1小时内只有22%
检查日志后,它会显示许多条目,如“任务尝试的进度”\u 12334\u m\u000003\u 0 is:0.0”
我在tez中运行了这项工作,现在快3个小时了,这项工作即将结束,Map-2 Vertice中有2项失败。Hive使用MapReduce,这是它速度慢的主要原因,但是如果您想找到更多信息,请参阅下面的链接
Hive使用MapReduce,这是它速度慢的主要原因,但是如果您想找到更多信息,请参阅下面的链接
提高配置单元查询运行速度的一般提示 1。使用ORC文件
Hive支持ORC文件,这是一种新的表存储格式,通过谓词下推(Hive中的上推)、压缩等技术提高了速度。
在每个配置单元表中使用ORCFile应该是一件非常简单的事情,而且对于快速响应您的配置单元查询非常有益
CREATETABLEA_ORC (
customerIDint, namestring, age int, address string
)
2。使用矢量化
矢量化查询执行通过一次批量执行1024行(而不是每次执行一行)来提高扫描、聚合、筛选和联接等操作的性能。
此功能在Hive 0.13中引入,可显著缩短查询执行时间,并可通过两个参数设置轻松启用:
I. sethive.vectorized.execution.enabled = true;
II. sethive.vectorized.execution.reduce.enabled = true;
3。基于分区的联接:
为了优化配置单元中的连接,我们必须减少查询扫描时间。为此,我们可以通过在连接中的“WHERE”子句或ON子句中指定分区谓词来创建具有分区的配置单元表。例如:表“状态视图”在列“状态”上分区 以下查询仅检索给定状态的行: 优化Hive中的连接
SELECT state_view.* FROM state view WHERE state_view.state= ‘State-1’ AND state_view.state = ‘State-3’;
如果一个表状态视图与另一个表城市用户联接,则可以在ON子句中指定一系列分区,如下所示:
SELECT state_view.* FROM state_view JOIN city_users ON (state_view.state = city_users.state);
希望这篇文章能帮助您满足配置单元中的所有连接优化需求。提高配置单元查询速度的一般提示 1。使用ORC文件
Hive支持ORC文件,这是一种新的表存储格式,通过谓词下推(Hive中的上推)、压缩等技术提高了速度。
在每个配置单元表中使用ORCFile应该是一件非常简单的事情,而且对于快速响应您的配置单元查询非常有益
CREATETABLEA_ORC (
customerIDint, namestring, age int, address string
)
2。使用矢量化
矢量化查询执行通过一次批量执行1024行(而不是每次执行一行)来提高扫描、聚合、筛选和联接等操作的性能。
此功能在Hive 0.13中引入,可显著缩短查询执行时间,并可通过两个参数设置轻松启用:
I. sethive.vectorized.execution.enabled = true;
II. sethive.vectorized.execution.reduce.enabled = true;
3。基于分区的联接:
为了优化配置单元中的连接,我们必须减少查询扫描时间。为此,我们可以通过在连接中的“WHERE”子句或ON子句中指定分区谓词来创建具有分区的配置单元表。例如:表“状态视图”在列“状态”上分区 以下查询仅检索给定状态的行: 优化Hive中的连接
SELECT state_view.* FROM state view WHERE state_view.state= ‘State-1’ AND state_view.state = ‘State-3’;
如果一个表状态视图与另一个表城市用户联接,则可以在ON子句中指定一系列分区,如下所示:
SELECT state_view.* FROM state_view JOIN city_users ON (state_view.state = city_users.state);
希望这篇文章能帮助你解决蜂巢中的所有优化需求