ハイブでVirtualBox Sandbox
のクエリを実行しているとき。私はSelect count(*)
がSelect *
よりも遅すぎると感じています。ハイブでセレクトカウント(*)がセレクト*より遅いのはなぜですか
何が起こっているのか説明できますか?
なぜこの遅延が起こっていますか?
ハイブでVirtualBox Sandbox
のクエリを実行しているとき。私はSelect count(*)
がSelect *
よりも遅すぎると感じています。ハイブでセレクトカウント(*)がセレクト*より遅いのはなぜですか
何が起こっているのか説明できますか?
なぜこの遅延が起こっていますか?
これは、データベースがクラスター化された主キーを使用しているため、照会が索引ではなく行を苦労させて行ごとにキーを検索するためです。
実行optimize table
。これにより、データページが物理的にソート順に格納された であることが保証されます。これにより、クラスタ化された主キーの範囲スキャンが になる可能性があります。
change_event_id 列にのみ追加の非プライマリインデックスを作成します。これにより、インデックスページにその列のコピーが格納されます( )。それを作成した後、 に実行計画を確認し、それはそれはそれは地図も、ジョブを削減することができます地図唯一の仕事しかし
Select Count(*) from table
することができ、新しいインデックスに
select * from table
を使っていることを確認してください
これが役に立ちます。
ありがとう、そのコードがどのように働いているのか説明できますか?実行時間を得るための方法はありますか?私の仕事は何を意味していますか? – Haris
ハイブクエリで実行できる操作には、次の3種類があります。
ここでは、最も安く最も速く、より高価で遅い順に説明します。
ハイブクエリは、メタデータのみの要求です。
表を表示するには、表を記述する例があります。これらのクエリでは、ハイブプロセスはメタデータサーバーでルックアップを実行します。メタデータサーバーはSQLデータベース(おそらくMySQL)ですが、実際のDBは構成可能です。
ハイブクエリは、hdfs get要求にすることができます。 テーブルから*を選択します。この場合、ハイブはhdfs操作を実行して結果を返すことができます。 hadoop fs -get、多かれ少なかれ。
ハイブクエリは、マップリダクションジョブにすることができます。
ハイブはhdfsにjarファイルを配送しなければなりません。jobtrackerはタスクをキューに入れ、tasktrackerはタスクを実行し、最終データはhdfsに入れられます。
マップリダクションジョブにはさまざまな可能性があります。
マップ専用ジョブにすることができます。 テーブルから* id> 100を選択します。たとえば、そのロジックのすべてをマッパーに適用できます。
マップとジョブを減らすことができます。 テーブルからmin(id)を選択します。 テーブル順のIDから*を選択します。
これは、複数のマップリダクションパスにもつながりますが、上記のようにいくつかの動作がまとめられていると思います。
何かが、AlexHenderson_v1.00が間違った質問に答えていたことを私に伝えます。 –
コメントは私の返答後に編集されていなければなりません。あなたが私の名前を間違って綴ると私には何かが伝えられます。 –