2013-04-23 70 views
0

我在Windows上使用HDInsight安装Hadoop,并尝试将参数传递给猪脚本。我在不同的机器上使用了几个脚本,所以我认为它可能是Windows的一个东西。我已经把默认值来检查参数的脚本使用HDInsight将参数传递给Pig脚本

示例脚本内工作:

%default myParam 'foo' 
load('$myParam'); 

运行的命令行测试预演: 猪-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命令提示符上添加?

回答

0

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

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

-x local标志指示猪没有映射缩减集群本地运行。

+0

谢谢伊恩,但它仍然有同样的问题。我还需要在群集上运行真正的脚本,但我认为问题出在Pig解析器上,而不是在Windows命令窗口中运行,而不是脚本在哪里运行 - 它永远不会那么远 – TobyEvans 2013-04-23 19:24:35

+0

@TobyEvans您是否找到了解决方案这个。我在Windows上遇到同样的问题 – DWGuru 2014-06-30 12:11:00

0

自HDInsight 0.4(3月25日)发布以来,我遇到同样的问题。我还通过将参数值直接放入脚本(正常工作)来验证脚本。因此,这可能是一个“窗口”的事情。一种解决方法是将您的参数放在一个参数文件(myparamfile.txt)中并引用该参数:

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