2015-04-07 72 views
2

我們有一個外部Hive表,用於處理原始日誌文件數據。這些文件按小時計算,並按日期和源主機名進行分區。Hive「添加分區」併發性

目前我們正在使用每小時觸發幾次的簡單python腳本導入文件。該腳本根據需要在HDFS上創建子文件夾,從臨時本地存儲中複製新文件並將任何新分區添加到Hive。

今天,使用「ALTER TABLE ... ADD PARTITION ...」創建新分區。但是,如果另一個Hive查詢在表上運行,它將被鎖定,這意味着add partition命令將失敗(如果查詢運行足夠長的時間),因爲它需要排它鎖。

這種方法的替代方法是使用「MSCK REPAIR TABLE」,由於某些原因,而不是似乎獲得了桌子上的任何鎖。但是,我得到的印象是不建議在生產環境中使用維修表格。

  • 在併發環境中以編程方式添加Hive分區的最佳做法是什麼?
  • 使用MSCK REPAIR TABLE有哪些風險或缺點?
  • 有兩個分區添加命令看似不一致的鎖定行爲的解釋嗎?即它們對運行查詢有不同的影響嗎?

回答

1

沒有一個很好的答案,但我們有同樣的問題,這是我們的調查結果:

所以基本上,我們仍在考慮我們的分區策略,但我們可能會嘗試預先創建所有可能的分區(在獲取數據之前),因爲我們知道所有未來分區的值(可能不是您的情況)。

+0

謝謝!非常有用的信息。 不幸的是,我們沒有選擇先創建分區,因爲它們事先並不知道。但是從Google網上論壇的討論中,似乎離開Hive CLI可能會有所幫助。 – knutn