【发布时间】:2010-08-11 02:17:49
【问题描述】:
在运行用 Ruby 编写的 Amazon EMR 流式传输作业时,我如何需要外部库?
我已经定义了我的映射器,并且在我的日志中得到了这个输出:
/mnt/var/lib/hadoop/mapred/taskTracker/jobcache/job_201008110139_0001/attempt_201008110139_0001_m_000000_0/work/./mapper_stage1.rb: 第 1 行:要求:找不到命令
我的第一反应是流 jar 没有意识到它正在执行一个 ruby 脚本(我在脚本顶部有一个指向 /usr/bin/ruby 的 shebang 声明)或者有一些时髦的东西继续流式 API 处理引用外部库的方式。
【问题讨论】:
-
看起来它没有被 ruby 执行。您可以尝试添加类似将 RUBY_VERSION 放在顶部...
-
这正是问题所在——它正在通过 sh 执行我的 ruby 脚本。通过在从 cms 行工具启动作业时显式声明 ruby 解释器解决了该特定问题(即: --mapper 'ruby s3://mybucket/mymapper.rb 将在我实际成功运行时更新 - 面临目前还有其他几个问题。感谢您的指点!
-
如果您使用
#!/usr/bin/env ruby,脚本将使用在 PATH 中找到的第一个 ruby 解释器执行。
标签: ruby amazon-web-services hadoop mapreduce