2

私は、40行しかないテーブルから900万行のデータを持つデータベース(2.5 GB)を扱っています。大きなテーブルに対してクエリを実行すると、さらに時間がかかります。より短い時間で結果が欲しい

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>set dfs.replication=5

この値は特定のセッションにのみ残りますか?

または.xmlファイルで変更する方が良いですか?

4

2 に答える 2

4

重要なことは、select count(*)ハイブにマップ削減ジョブを開始させることです。

これは mysql クエリのように非常に高速だと思うかもしれません。

しかし、Hadoop の最も単純な map reduce ジョブでさえ、合計時間は、ジョブ トラッカーへの送信、タスク トラッカーへのタスクの割り当てなどで構成されます。したがって、合計時間は少なくとも数十秒です。

select count(*)大きなテーブルで試してみてください。時間はさほど増えません。

したがって、Hive と Hadoop がビッグデータを処理することを理解する必要があります。

于 2012-11-15T15:28:08.797 に答える
3

dfs.replicationハイブ クエリの実行時間に影響を与えるべきではありません。データのブロックがレプリケートされる HDFS ノードの数を決定する hdfs-site.xml から公開されるプロパティです。dfs.replicationof 3 は、データの各ブロックが (合計で) 3 つのノード上にあることを意味します。したがって、特定のセッション用ではありません。

于 2012-11-04T19:17:31.867 に答える