2016-09-02 6 views
0

次の事実を考慮して、Hive/Impalaテーブルを効率的に設計するにはどうすればよいですか?Hadoopパーティショニング。 Hive/Impalaテーブルを効率的にデザインするにはどうすればよいですか?

  1. 表は、 日ごとに約1億行のツールデータを受け取ります。データを受け取った日付は、ツールIDとともに の列に格納されます。
  2. 各ツールは、カラム実行IDによって識別される1日あたり約500回の実行である を受け取ります。各実行ID には、おおよそ1MBのサイズのデータ​​が含まれています。
  3. ブロックのデフォルトサイズは64 MBです。
  4. テーブルは、日付、ツールID、実行IDの順に検索できます。
+1

これまでに考えていたことはありますか? – dg99

+0

[ようこそ!](http://stackoverflow.com/help/how-to-ask)あなたの調査結果を更新してください。さもなければ質問が広すぎるでしょう! –

答えて

0

このデータに対して分析を行っている場合、Impalaでの選択は、パーケット形式を使用しています。ユーザーにとってうまくいったことは、レコードの日付値に基づいて年、月、日を区切ることです。

したがって、たとえば、寄木細工として保存されたパーティション(年間int型、月int型、日int)をTABLE fooの(tool_id int型、eff_dtタイムスタンプ)を作成

我々は、動的作成するには、このようなものを使用して、この表にデータをロードしますパーティション:

INSERT INTO foo partition (year, month, day) 
SELECT tool_id, eff_dt, year(eff_dt), month(eff_dt), day(eff_dt) 
FROM source_table; 

次に、あなたが、彼らはそれがより良いパフォーマンスのためのパーティションを打つように彼らのWHERE句にYEAR、MONTH、DAYを追加するための最高のパフォーマンスをしたい場合は、そのユーザーを訓練します。そして、最終的な結果に表示されるような形式で日付値を持つように、SELECTステートメントにeff_dtを追加させます。

CDHでは、Parquetはデフォルトで256MBのチャンクにデータを保存しています(設定可能です)。これを設定する方法は次のとおりです。http://www.cloudera.com/documentation/enterprise/latest/topics/impala_parquet_file_size.html

関連する問題