2015-12-19 31 views
0

我已創建包含過去10年曆史庫存數據的配置單表。從現在開始,我必須在日常基礎上追加數據。如何在沒有分區的情況下將數據附加到現有的配置單元表

我想創建基於日期的分區,但它導致許多分區大約3000加上每個新日期的新分區,我認爲這是不可行的。

任何人都可以建議一個最佳方法來存儲表中的所有歷史數據並追加新數據。

回答

0

您可以使用此命令

LOAD DATA LOCAL INPATH '<FILE_PATH>' INTO TABLE <TABLE_NAME>; 

它將映射到表名HDFS目錄下創建新文件。即使沒有太多的分區,你仍然會遇到太多的文件問題。

定期,你需要這樣做:

  1. 從目標表運行LOAD命令來臺平臺
  2. 可以運行INSERT命令到目標表從階段選擇創建階段表
  3. 移動數據表
  4. 現在它會加載數據文件數等於減速器的數量。
  5. 您可以刪除階段表

你可以(在一個月大概一次)定期運行該程序。

2

對於每個分區表,關於如何分區表的決定主要取決於如何查詢表。 另一個考慮因素是每個分區有多少數據,因爲分區不應該太小。每個HDFS塊至少應該至少與HDFS塊一樣大,否則會佔用過多的目錄。

這就是說,我不認爲3000分區會是一個問題。在之前的工作中,我們有一張每小時有一個分區的巨大表格,每個小時大約20G字節,我們有6個月的數據,所以大約有4000個分區,它工作得很好。

在我們的案例中,大多數人最關心的是上週和最後一天。 我建議你研究如何使用表格,也就是說,所有10年都被使用,還是僅僅是最新的數據?

作爲第二件事,研究數據有多大,考慮它是否會隨着新負載的增長而增長,並且看看每個分區將會有多大。一旦你確定了這兩點,你就可以做出決定,你可以使用每日分區(這可能是好的,3000分區也不錯),或者你可以每週或每月做一個分組。

相關問題