2017-04-16 70 views
0

我有一個情況,文本分隔文件每隔30分鐘從不同的服務器(大約10個)到達hadoop系統。處理hadoop python中的多個文件

每個文件有大約250萬條記錄,可能不會在同一時間到達,我正在尋找一種方法,可以每30分鐘處理一次這些文件。

我的問題是:

  1. 如何處理在不同時間到達的文件嗎?
  2. 我想要將數據彙總到10個文件中。是否應該將這些大文件合併或分開處理?

我想這個解決方案在python中實現,但在hadoop中使用任何工具/技術的解決方案將不勝感激。

+0

你可以看看Apache Oozie。它能夠根據數據可用性發出火花動作/作業。 – Pushkr

回答

0

如何處理在不同時間到達的文件?

除非您的數據對時間敏感,否則無關緊要。如果是這樣,那麼你的原始數據應該包括記錄被寫入的時間戳。

這樣的大文件應該分開組合還是處理?

大,單獨的文件是最好的。記下HDFS塊大小。這個大小取決於你的安裝。

我想在Python中實現該解決方案

歡迎你使用星火流的手錶文件的目錄,或者Oozie的+火花,只是安排定期分批,但其他的工具,可以說是簡單。

一些你可以研究

  • 阿帕奇NiFi
  • Streamsets數據採集
  • 阿帕奇水槽

水槽會要求你的10臺外部服務器上安裝代理。

每個列出的服務都可以近乎實時地讀取數據,因此您不需要明確需要30分鐘的批次。