2015-12-18 38 views
1

我自己對駱駝很新。 現在我正在將一個文件從FTP路由到HDFS。該文本文件包含必須從該FTP路由到HDFS的其他文件的列表。每天更新此文本文件,並移動新文件。 我正在使用一個bean將文本文件解析到一個列表中並進行清理,以便它具有確切的文件路徑。現在我的問題是,我可以創建一個循環來瀏覽這個列表併爲每個文件創建一個新的路由嗎?對於java也不太好,所以不要太笑。是否可以通過駱駝文本文件循環來創建路線?

public class DailyDownloader { 
public List<String> splitDaily(String body) throws IOException 
{ 
    System.out.println("Printing Download List"); 


    BufferedReader bufReader = new BufferedReader(new StringReader(body)); 
    String line=null; 
    bufReader.readLine(); 
    List<String> dailyFilesList = new ArrayList<String>(); 
    while((line=bufReader.readLine()) != null) 
    { 
     String fileName = line.split("\\|", 2)[0]; 

     dailyFilesList.add(fileName); 

    } 
    System.out.println(dailyFilesList); 
    return dailyFilesList; 

} 

上面所列內容返回類似: /camelfiles /文件1

/camelfiles/abc/file123.txt

/maven/settings.xml

等。

謝謝!

+0

你是否有任何控制遠程FTP服務器?你試圖做的事情可以完成,我只是不知道它是如何可擴展的。換句話說,我必須想象有多少路線可以添加到駱駝上下文的上限。 – rmlan

+0

FTP實際上由供應商控制。我沒有看到可擴展性太大的問題。它通常不超過20個文件。 @rmlan – user5424235

+0

沒錯,但這應該是每天都會發生的。這是一個長期運行的駱駝過程嗎?或者這是每天運行一次的東西? – rmlan

回答

1

我可能會解決這個問題是這樣的:

  1. 一條路線拿起文件,並解析它。
  2. 對於每個文件名將文件路徑發送到另一個路由。你可以通過一些類似ActiveMQ的事件總線或通過直接內部的方式來完成此操作
  3. 此路由從FTP站點獲取文件並將其保存在某個地方。

沒有必要爲文件啓動新的路由。你只需要將問題分解成單獨的組件。