2016-09-02 59 views
0

考慮到以下事實,您如何有效地設計Hive/Impala表?Hadoop分區。如何有效地設計Hive/Impala表?

  1. 該表格每 一天接收約1億行的工具數據。它接收數據的日期存儲在表中的 列中以及其工具ID。
  2. 每個工具收到約 每天運行500次,由列運行ID標識。每個運行ID 包含大約1mb大小的數據。
  3. 該塊的默認大小爲64 MB。
  4. 可以按日期,工具ID和運行ID按此順序搜索表格。
+1

到目前爲止,你有什麼考慮? – dg99

+0

[歡迎來到SO!](http://stackoverflow.com/help/how-to-ask)請更新您的發現,否則問題會變得太廣泛! –

回答

0

如果您正在對此數據進行分析,那麼使用Impala的堅實選擇是使用Parquet格式。對我們的用戶來說運行良好的是根據記錄中的日期值按年,月,日來劃分日期。

因此,例如CREATE TABLE FOO(tool_id INT,eff_dt時間戳)分區(年INT,月INT,天INT)存儲拼花

當數據加載到這個表中,我們使用這樣的事情來創建動態分區:

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子句,以便它擊中了更好的性能的分區。然後讓他們在SELECT聲明中添加eff_dt,以便在最終結果中看到他們喜歡的格式的日期值。

在CDH中,Parquet默認將數據存儲在256MB塊(可配置)中。以下是如何配置它:http://www.cloudera.com/documentation/enterprise/latest/topics/impala_parquet_file_size.html