我想压缩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。
答案 0 :(得分:0)
进行一些测试后,使用ADD FILE
添加整个目录(解压缩)似乎有效:
ADD FILE /home/user/browser-master