2012-06-08 45 views

回答

2

UPDATE 2012年6月22日:亞馬遜正在評審@ nkadwa的拉請求(請參閱上文)。留意這一點。

我一直在使用Ruby命令行客戶端,但有一些基於Ruby/Rails的工具構建,需要ruby 1.9.3。我的解決方法是RVM

比方說,你有$HOME/projects/elastic-mapreduce,你有EMR紅寶石客戶 比方說,你也有$HOME/projects/myproj

你可以告訴你的系統使用的紅寶石1.8.7 EMR有:

echo 'rvm use ruby-1.8.7' > $HOME/projects/elastic-mapreduce/.rvmrc 
echo 'rvm use [email protected]' > $HOME/projects/myproj/.rvmrc 

如果您需要從某處調用彈性map-reduce腳本,則可以像下面那樣調整RVM。默認情況下,elastic-mapreduce在其同一目錄中使用credentials.json文件。請注意,第一次進入目錄時,系統將驗證您是否願意信任.rvmrc文件。

# cd'ing into the directory will output stuff to stdout when it changes 
cd $HOME/elastic-mapreduce > /dev/null && rvm ruby-1.8.7; ./elastic-mapreduce [args] 

或者,如果你想跳過「CD」的業務,你可以這樣做:

# Again, redirect output after 'rvm use' so you don't get the green output 
system("rvm use ruby-1.8.7 > /dev/null; /path/to/elastic-mapreduce -c /path/to/elastic-mapreduce/credentials.json --list") 

您將需要遵循RVM網站上的說明來得到它安裝(相當直接向前)。但是,當您需要運行多個Ruby版本時,這是一個完美的解決方案。我已經將它運行在EC2的生產環境中。

希望有所幫助。

0

UPDATE

羽翼豐滿EMR支持現在包括在AWS SDK爲Ruby的V1.6 +。 https://github.com/amazonwebservices/aws-sdk-for-ruby

PREVIOUS

我已經在一個叉加入EMR支持與客戶端行爲適合於一般用途:

https://github.com/kadwanev/aws-sdk-for-ruby/tree/add-emr 

實例應用:

AWS.config({:access_key_id => '', :secret_access_key => '', 
      :emr_key_pair => '', :emr_key_pair_file => ''}) 

emr = AWS::EMR.new 
job = emr.jobs(:active => true).first 

job.short_desc 

=> {:id=>"j-2N8V9X1RWH1QJ", :state=>"WAITING", :name=>"job name", :instance_count=>"1", :instance_hours=>"2", :steps=>[{:name=>"step name", :state=>"COMPLETED", :last_change=>nil}]} 

job = job.create({name: 'job name', instances: {keep_job_flow_alive_when_no_steps: true, 
        instance_count: 1, master_instance_type: 'm1.small', slave_instance_type: 'm1.small'}}) 

=> #<AWS::EMR::JobFlow:j-XXXXXXXXXXXXJ> 

job.ssh_command 

=> "ssh -o ServerAliveInterval=10 -o StrictHostKeyChecking=no -i key-pair-file.pem [email protected]" 

job.terminate 

希望他們採取拉。

相關問題