在亚马逊EMR的ruby流媒体脚本中需要外部库

问题描述 投票:0回答:1

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

我已经定义了我的映射器,并且在我的日志中得到了这个输出。

mntvarlibhadoopmapredtaskTrackerjobcachejob_201008110139_0001attempt_201008110139_0001_m_000000_0work.mapper_stage1.rb:第1行:require:命令未找到。

我的第一反应是,要么是流媒体jar没有意识到它在执行一个ruby脚本(我在脚本顶部有一个指向usrbinruby的shebang声明),要么是流媒体API处理引用外部库的方式有问题。

ruby amazon-web-services hadoop mapreduce
1个回答
0
投票

目前在Amazon Elastic Mapreduce中,usrbinruby是一个指向usrbinruby1.8的符号链接。 这是一个危险的解释器,因为它是古老和错误的。

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

如果你使用的是64位实例之一(比如m1.xlarge),你可以安装一下 Ruby企业版 中的一个引导动作。 这将进入usrlocalbin,它比原版Ruby1.8有更高的路径解析优先级,所以service-nanny(shebangs usrbinruby)仍然可以工作,而你的脚本可以运行在2011年建立的解释器上,有更高的补丁级别。

© www.soinside.com 2019 - 2024. All rights reserved.