2015-05-07 256 views
4

我使用Flume將多個CSV文件從本地文件系統寫入HDFS。使用Flume將CSV文件寫入HDFS

我想知道什麼是Flume HDFS接收器的最佳配置,以便本地系統上的每個文件都將完全以CSV格式複製到HDFS中。我希望Flume處理的每個CSV文件都是單個事件,刷新並寫入單個文件。儘可能地,我希望該文件是完全一樣的,而不需要標題的東西等。

我需要把這些值放在模擬我想要的行爲?

hdfs.batchSize = x 
hdfs.rollSize = x 
hdfs.rollInterval = x 
hdfs.rollCount = x 

請提供是否還有其他Flume代理配置變量,我也需要更改。

如果這不能使用現有的配置,我需要使用自定義接收器,然後實現我想要的?

感謝您的輸入。

P.S.我知道hadoop fs -put-copyFromLocal會更適合這項工作,但由於這是一個概念驗證(表明我們可以使用Flume進行數據攝取),所以我需要使用Flume。

+0

爲什麼不使用'hadoop fs -put '命令?我的意思是,以動態方式創建本地文件?羣集外的機器中是否有本地文件? – frb

+0

@frb是的文件是機器生成的。此外,我們需要使用Flume的原因是這是一個概念證明(我們已經使用Flume進行數據處理)。我很清楚'hadoop put'或'hadoop copyFromLocal'就可以。謝謝。 – menorah84

回答

2

您將不得不通過將值設置爲0來禁用所有滾動*屬性。這將有效防止水槽滾動文件。正如您可能已經注意到的那樣,flume按每個事件操作,在大多數情況下,事件在文件中是單行。爲了還實現了保存的文件結構本身的問題,你需要使用卷軸DIR源並激活FileHeader裏:

fileHeader false Whether to add a header storing the absolute path filename. 

組爲true。它將提供一個%{file}屬性,您可以在您的hdfs sink路徑規範中引用它。