我想压缩 Ruby gem 的文件,并将它们分发到我的 EMR 集群。我还想使用一个简单的 Ruby 脚本,在 Hive Streaming 作业中引用这个 gem 中的文件。
我使用以下方法将文件和存档添加到 Hadoop 分布式缓存中:
ADD FILE /home/user/mobile.rb;
ADD ARCHIVE /home/user/browser-master.zip;
在 mobile.rb 中,我使用下面的代码来模拟使用 gem:
$.push File.expand_path("../browser-master/lib", __FILE__)
require "browser"
当我在本地计算机上的同一目录中拥有解压缩的存档和 mobile.rb 文件时,我可以将数据流式传输到它并正常运行程序。
但是当我将文件添加到我的 Hadoop 集群时,我得到了这个错误:
FAILED: Execution Error, return code 20003 from org.apache.hadoop.hive.ql.exec.MapRedTask. An error occurred when trying to close the Operator running your custom script.
当存档在分布式缓存中解压缩时,我的 mobile.rb 是否需要指向其他内容?
我正在使用 Hive 0.11。