Apache pig 使用HDInsight将参数传递给Pig脚本

Apache pig 使用HDInsight将参数传递给Pig脚本,apache-pig,azure-hdinsight,Apache Pig,Azure Hdinsight,我正在Windows上使用Hadoop的HDInsight安装,并尝试将参数传递给pig脚本。我在不同的机器上使用了几个脚本,所以我认为它可能是Windows的东西。我已经输入了默认值来检查脚本中的参数是否正常工作 示例脚本: %default myParam 'foo' load('$myParam'); 以从命令行到测试的干运行方式运行: pig-r testSub.pig 结果: load('foo'); 但是尝试从命令行提供值: pig -p myParam=bar -r testS

我正在Windows上使用Hadoop的HDInsight安装,并尝试将参数传递给pig脚本。我在不同的机器上使用了几个脚本,所以我认为它可能是Windows的东西。我已经输入了默认值来检查脚本中的参数是否正常工作

示例脚本:

%default myParam 'foo'
load('$myParam');
以从命令行到测试的干运行方式运行: pig-r testSub.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命令提示符下添加一些奇怪的转义吗?

你的-p参数很好。您需要指定
-x local-r-f
,例如:

>pig-pmyparam=bar-x local-r-f testSub.pig


-x local
标志指示pig在没有mapreduce集群的情况下在本地运行。

自0.4版HDInsight(3月25日)以来,我遇到了同样的问题。我还通过将参数值直接放入脚本中来验证脚本(工作正常)。因此,它可能是一个“窗口”的东西。一种解决方法是将参数放置在参数文件(myparamfile.txt)中,并使用以下内容引用:

    > pig -f testsub.pig -m myparamfile.txt

谢谢你,伊恩,但还是有同样的问题。我还需要在集群上运行真正的脚本,但我认为问题在于通过Windows命令窗口的Pig解析器,而不是脚本之后运行的地方——它永远不会得到这个结果far@TobyEvans你找到解决办法了吗。我在Windows上也有同样的问题