2012-02-07 68 views
1

我正在嘗試對Amazon Elastic MapReduce進行一些數據分析。映射器步驟是一個python腳本,它包含對稱爲「./formatData」的已編譯C++二進制文件的調用。例如:在Amazon MapReduce上調用已編譯的二進制文件

# myMapper.py 
from subprocess import * 
inputData = sys.stdin.readline() 
# ... 
p1 = Popen('./formatData', stdin=PIPE, stdout=PIPE) 
p1Output = p1.communicate(input=inputData) 
result = ... # manipulate the formatted data 
print "%s\t%s" % (result,1) 

我可以在Amazon EMR上調用這樣的二進制可執行文件嗎?如果是這樣,我將在哪裏存儲二進制文件(在S3中),我應該編譯什麼平臺,以及如何確保我的映射器腳本可以訪問它(理想情況下,它將位於當前工作目錄中)。

謝謝!

回答

3

如果確保將二進制文件正確複製到工作節點,則可以用這種方式調用二進制文件。

請參見:

https://forums.aws.amazon.com/thread.jspa?threadID=35158

有關如何使用分佈式緩存,使二進制文件的工人節點上訪問一個解釋。

+0

謝謝。另外,我應該編譯什麼平臺? – tba 2012-02-07 01:23:10

+0

Linux(彈性map-reduce在Amazon Linux上運行)。 – gwt 2012-02-07 01:52:05

+1

在任何舊版Linux機器上構建都不行,所以我發現這個指南是建立在EMR上的:http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/usingemr_buildingmodules.html – tba 2012-02-07 05:10:30

相關問題