在Amazon EMR的ruby流脚本中需要外部库

时间:2010-08-11 02:17:50

标签: ruby amazon-web-services hadoop mapreduce

运行用Ruby编写的Amazon EMR流媒体作业时,如何需要外部库?

我已经定义了我的mapper,并在我的日志中获得了这个输出:

  

的/ mnt /变种/ LIB / hadoop的/ mapred /的TaskTracker / jobcache / job_201008110139_0001 / attempt_201008110139_0001_m_000000_0 /工作/./ mapper_stage1.rb:   第1行:require:找不到命令

我的第一个反应是流媒体jar没有意识到它正在执行一个ruby脚本(我在脚本顶部指向/ usr / bin / ruby​​有一个shebang声明)或者有一些时髦的东西继续流API处理引用外部库的方式。

提前致谢!

艾萨克

1 个答案:

答案 0 :(得分:0)

目前在Amazon Elastic Mapreduce中,/ usr / bin / ruby​​是指向/usr/bin/ruby1.8的符号链接。这是一个危险的翻译使用,因为它是古老和马车。

$ /usr/bin/ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [x86_64-linux]

如果您正在使用其中一个64位实例(例如m1.xlarge),则可以在引导操作中安装Ruby Enterprise Edition。这进入/ usr / local / bin,它的路径分辨率优先于Ruby1.8的优先级,所以service-nanny(shebangs / usr / bin / ruby​​)仍然有效,而你的脚本可以运行在有一个解释器上建于2011年,具有更高的补丁级别。