2011-05-23 66 views

回答

5

絕對:)你可以使用Hadoop的流媒體這樣的:

創建映射器和/或減速的Lua腳本,從標準輸入讀取:

#!/usr/bin/env lua 
while true do 
    local line = io.read() 
    if line == nil then break end 

    # Do something with the incoming row 

end 

,然後運行您的工作,如:

$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar \ 
    -input myInputDirs \ 
    -output myOutputDir \ 
    -mapper myMapper.lua \ 
    -reducer myReducer.lua \ 
    -file /local/path/to/myMapper.lua 
    -file /local/path/to/myReducer.lua 

在這裏,您使用-mapper-reducer指定您的映射器和reducer腳本,並將這兩個腳本與-file您的分佈式緩存,所有任務跟蹤器都可以訪問它。

當流運行,你需要確保lua適用於所有運行任務服務器的機器。

前一段時間,我們嘗試使用luajit(這是可怕的快)從豬流。如果您使用的豬,你可以這樣做:

OP = stream IP through `/local/path/to/script`; 

這是不一樣的使用Lua作爲一個映射或減速,但根據您的操作情況,請從映射器或減速機的輸出通過流劇本。

相關問題