Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 为什么加入蜂巢的时间太长?_Hadoop_Hive_Mapreduce_Yarn_Tez - Fatal编程技术网

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); 
希望这篇文章能帮助你解决蜂巢中的所有优化需求