VirtualBox Sandbox
ハイブでクエリを実行しているとき。Select count(*)
よりも遅すぎると感じSelect *
ます。
背後で何が起こっているのか誰か説明できますか?
そして、なぜこの遅延が起こっているのですか?
select * from table
マップのみのジョブでもかまいませんが、
Select Count(*) from table
Map and Reduce ジョブの場合があります
お役に立てれば。
ハイブ クエリで実行できる操作には 3 種類あります。
ここでは、最も安価で高速なものから、より高価で遅いものの順に並べています。
Hive クエリは、メタデータのみの要求にすることができます。
Show tables、describe table は例です。これらのクエリでは、Hive プロセスがメタデータ サーバーでルックアップを実行します。メタデータ サーバーは SQL データベース (おそらく MySQL) ですが、実際の DB は構成可能です。
Hive クエリは、hdfs get 要求にすることができます。テーブルから * を選択すると、例になります。この場合、Hive は hdfs 操作を実行して結果を返すことができます。hadoop fs -get、多かれ少なかれ。
Hive クエリは Map Reduce ジョブにすることができます。
Hive は jar を hdfs に送信する必要があり、jobtracker はタスクをキューに入れ、tasktracker はタスクを実行し、最終データを hdfs に入れるかクライアントに送信します。
Map Reduce ジョブにもさまざまな可能性があります。
マップのみのジョブである可能性があります。Select * from table where id > 100 、たとえば、そのすべてのロジックをマッパーに適用できます。
これは Map and Reduce ジョブで、表から min(id) を選択します。Select * from table order by id ;
また、複数の map Reduce パスにつながる可能性もありますが、上記はいくつかの動作を要約していると思います。