我正在windows上使用hadoop的hdinsight安装,并尝试将参数传递给pig脚本。我在不同的机器上使用了几个脚本,所以我认为它可能是windows的东西。我已经输入了默认值来检查脚本中的参数是否工作
脚本示例:
%default myParam 'foo'
load('$myParam');
从命令行运行到test:pig-rtestsub.pig
结果:
load('foo');
但是试图从命令行提供值:
pig -p myParam=bar -r testSub.pig
引发错误:
2013-04-23 13:37:27,531 [main] ERROR org.apache.pig.Main - ERROR 2999: Unexpected internal error. Encountered unexpected arguments on command line - please check the command line.
Details at logfile: C:\Hadoop\hadoop-1.1.0-SNAPSHOT\logs\pig_1366720647495.log
日志文件也是这么写的:
Error before Pig is launched
----------------------------
ERROR 2999: Unexpected internal error. Encountered unexpected arguments on command line - please check the command line.
java.lang.RuntimeException: Encountered unexpected arguments on command line - please check the command line.
at org.apache.pig.Main.run(Main.java:500)
at org.apache.pig.Main.main(Main.java:111)
================================================================================
我试过使用“-param”,把东西放在单引号和双引号中,移动顺序,但是运气不好。你知道下一步该怎么做吗?我需要在windows命令提示符下添加一些奇怪的转义吗?
2条答案
按热度按时间rqenqsqc1#
自从hdinsight的0.4版本(3月25日)发布以来,我也遇到了同样的问题。我还通过在脚本中直接输入参数值来验证脚本(工作正常)。因此,它可能是一个“窗口”的东西。一种解决方法是将参数放置在参数文件(myparamfile.txt)中,并使用以下内容引用:
nxagd54h2#
你的-p论点很好。您需要指定
-x local -r -f <file>
例如:> pig -p myParam=bar -x local -r -f testSub.pig
这个-x local
标志指示pig在没有mapreduce集群的情况下在本地运行。