运行用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处理引用外部库的方式。
提前致谢!
艾萨克
答案 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年,具有更高的补丁级别。