0

我在 Windows 上使用 Hadoop 的 HDInsight 安装,并尝试将参数传递给猪脚本。我在不同的机器上使用了几个脚本,所以我认为这可能是 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 命令提示符下添加一些奇怪的转义吗?

4

2 回答 2

0

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

    > pig -f testsub.pig -m myparamfile.txt
于 2013-05-03T12:17:43.237 回答
0

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

> pig -p myParam=bar -x local -r -f testSub.pig

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

于 2013-04-23T13:58:26.090 回答