我在windows中安装了cygwin,hadoop和pig。配置似乎没问题,因为我可以在批处理和嵌入模式下运行pig脚本。
当我尝试以grunt模式运行pig时,会发生一些奇怪的事情。让我解释。 我尝试运行像
这样的简单命令grunt> A = load 'passwd' using PigStorage(':');
当我按Enter键时,没有任何反应。光标转到下一行,grunt>
提示符不再出现。好像我正在输入文本编辑器。
有没有类似的事发生在你身上?你有什么想法我能解决这个问题吗?
答案 0 :(得分:0)
行为与您观察的内容一致。我将以pig tutorial为例。
以下命令不会导致pig
的任何活动。
raw = LOAD 'excite.log' USING PigStorage('\t') AS (user, time, query);
但是如果你调用一个导致使用变量raw
的数据的命令,那么当你在grunt shell中看到一些动作时会使用map-reduce。在那里提到的第二个命令的一些东西。
clean1 = FILTER raw BY org.apache.pig.tutorial.NonURLDetector(query);
同样,您的命令不会导致任何操作,您必须使用变量A
中的数据,这会导致map-reduce命令在grunt shell上看到一些操作:
grunt> A = load 'passwd' using PigStorage(':');
答案 1 :(得分:0)
Pig只会在您使用创建输出的命令DUMP
(到控制台)或STORE
时处理命令,您也可以使用命令DESCRIBE
来获取别名的结构和EXPLAIN
查看地图/减少计划
所以基本上DUMP A;
会给你A
答案 2 :(得分:0)
请尝试在Windows命令窗口中运行。
C:\ FAST \ JDK64 \ 1.6.0.31/bin/java -Xmx1000m -Dpig.log.dir = C:/ cygwin / home / $ USERNAME $ / nubes / pig / logs -Dpig.log.file = pig .log -Dpig.home.dir = C:/ cygwin / home / $ USERNAME $ / nubes / pig / -classpath C:/ cygwin / home / $ USERNAME $ / nubes / pig / conf; C; C:/ FAST / JDK64 / 1.6.0.31 / lib中/的tools.jar; C:/cygwin/home/$USERNAME$/nubes/pig/lib/jython-standalone-2.5.3.jar; C:/ Cygwin的/家庭/ $ USERNAME $ / nubes / pig / conf; C:/ cygwin / home / $ USERNAME $ / nubes / hadoop / conf; C:/cygwin/home/$USERNAME$/nubes/pig/pig-0.11.1.jar org.apache.pig .Main -x local
相应地将$USERNAME$
替换为您的用户ID ..
相应地修改类路径和conf路径..
它在本地以及地图缩小模式中都很有效。
答案 3 :(得分:0)
猪壳在cygwin中挂起。但猪脚本从猪脚本文件中成功执行。
如下:
$pig ./user/input.txt
对于本地模式:
pig -x local ./user/input.txt
答案 4 :(得分:0)
我昨天遇到了和你同样的问题,我花了一整天的时间发现我的猪或热键出了什么问题,并最终解决了。我发现这仅仅是因为我从其他资源复制了Pig代码,然后在Pig命令行中无法识别出弯引号,而仅允许使用直引号,因此输入流不会结束。 我的建议是,您应该注意代码中的有效字符,尤其是当您仅将代码复制到命令行中时,这总是会导致意外错误。