Bucketingを使用すると、結合が速くなり、パーティション化されたテーブルを使用する必要がある単純なSELECT速度が向上します。 flightnumでテーブルを分割して、選択を再度実行してください。
どうしてですか?
のは、このようなバケット分割されていないテーブルを作成してみましょう:各減速機は、同じキーでレコードのみを処理しますので、
create table `t1b`(
`exchange` string,
`stock_symbol` string,
`date` string,
`stock_price_open` float,
`stock_price_high` float,
`stock_price_low` float,
`stock_price_close` float,
`stock_volume` int,
`stock_price_adj_close` float)
clustered by (`stock_symbol`) sorted by (`date`) into 306 buckets;
とのデータとそれを埋める聞かせし...など、多くのバケツなど、多くの減速がありますし、日付
...のは、HDFSを見てみましょうすることで、この場合には、あなたが好きなソートを使用して、そのファイルにデータを保存します我々が得たもの個の
ますのでご注意ください。.. 306ファイル(バケット)...
と同じクラスタ化キーを持つレコードが存在し、それらの各内部
...
すべてのファイルは同じフォルダにあります。ハイブで選択すると、探している値を保持しているファイルを理解する方法がないため、パーティション化なしでバケット処理を実行すると、私たちが探しているデータです。
バケツは何をしますか?データをジョインするときは、バケット全体をRAMにロードすることができ、REDUCEで低速ジョインを行う代わりにMAPで高速ジョインを得ることができます。
なぜそうですか?すべての日付がクエリによって読み取られていますか? –
上記の更新の回答をご覧ください。 – ozw1z5rd
お返事ありがとうございます。 –