2013-06-12 23 views

答えて

2

これは、データベースがクラスター化された主キーを使用しているため、照会が索引ではなく行を苦労させて行ごとにキーを検索するためです。

  • 実行optimize table。これにより、データページが物理的にソート順に格納された であることが保証されます。これにより、クラスタ化された主キーの範囲スキャンが になる可能性があります。

  • change_event_id 列にのみ追加の非プライマリインデックスを作成します。これにより、インデックスページにその列のコピーが格納されます( )。それを作成した後、 に実行計画を確認し、それはそれはそれは地図も、ジョブを削減することができます地図唯一の仕事しかし

    Select Count(*) from table 
    

    することができ、新しいインデックスに

+1

何かが、AlexHenderson_v1.00が間違った質問に答えていたことを私に伝えます。 –

+0

コメントは私の返答後に編集されていなければなりません。あなたが私の名前を間違って綴ると私には何かが伝えられます。 –

11
select * from table 

を使っていることを確認してください

これが役に立ちます。

+1

ありがとう、そのコードがどのように働いているのか説明できますか?実行時間を得るための方法はありますか?私の仕事は何を意味していますか? – Haris

3

ハイブクエリで実行できる操作には、次の3種類があります。

ここでは、最も安く最も速く、より高価で遅い順に説明します。

ハイブクエリは、メタデータのみの要求です。

表を表示するには、表を記述する例があります。これらのクエリでは、ハイブプロセスはメタデータサーバーでルックアップを実行します。メタデータサーバーはSQLデータベース(おそらくMySQL)ですが、実際のDBは構成可能です。

ハイブクエリは、hdfs get要求にすることができます。 テーブルから*を選択します。この場合、ハイブはhdfs操作を実行して結果を返すことができます。 hadoop fs -get、多かれ少なかれ。

ハイブクエリは、マップリダクションジョブにすることができます。

ハイブはhdfsにjarファイルを配送しなければなりません。jobtrackerはタスクをキューに入れ、tasktrackerはタスクを実行し、最終データはhdfsに入れられます。

マップリダクションジョブにはさまざまな可能性があります。

マップ専用ジョブにすることができます。 テーブルから* id> 100を選択します。たとえば、そのロジックのすべてをマッパーに適用できます。

マップとジョブを減らすことができます。 テーブルからmin(id)を選択します。 テーブル順のIDから*を選択します。

これは、複数のマップリダクションパスにもつながりますが、上記のようにいくつかの動作がまとめられていると思います。

関連する問題