蜂巢性能提升

时间:2012-11-01 08:17:16

标签: hive

我正在处理一个数据库(2.5 GB),其中一些表只有40行,有些表有900万行数据。 当我对大表进行任何查询时,需要更多时间。 我希望在更短的时间内获得结果

表上的小查询只有90行 - >

hive> select count(*) from cidade; 
Time taken: 50.172 seconds

HDFS-site.xml中

<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
<description>Default block replication.
The actual number of replications can be specified when the file is created.
The default is used if replication is not specified in create time.
</description>
</property>

<property>
<name>dfs.block.size</name>
<value>131072</value>
<description>Default block replication.
The actual number of replications can be specified when the file is created.
The default is used if replication is not specified in create time.
</description>
</property>
</configuration>

这些设置会影响配置单元的性能吗?     dfs.replication=3     dfs.block.size=131072

我可以将其从hive提示符设置为

hive>set dfs.replication=5

此值仅用于特定会话吗?

或者在.xml文件中更改它是否更好?

2 个答案:

答案 0 :(得分:4)

重要的是select count(*)会导致配置单元启动地图缩减工作。

您可能认为这与mysql查询非常快。

但即使是最简单的地图也会减少hadoop中的作业,总时间包括提交到作业跟踪器,将任务分配给任务跟踪器等等。所以总时间约为10秒。

在大桌子上试试select count(*)。时间不会增加太多。

所以,你需要了解hive和hadoop处理大数据。

答案 1 :(得分:3)

dfs.replication不应影响您的配置单元查询的运行时。它是从hdfs-site.xml公开的属性,用于确定将数据块复制到的HDFS节点数。 dfs.replication为3意味着每个数据块在3个节点上(总共)。因此,它不适用于特定的会话。