使用hdinsight将参数传递给pig脚本

nom7f22z  于 2021-06-24  发布在  Pig
关注(0)|答案(2)|浏览(353)

我正在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命令提示符下添加一些奇怪的转义吗?

rqenqsqc

rqenqsqc1#

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

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

nxagd54h2#

你的-p论点很好。您需要指定 -x local -r -f <file> 例如: > pig -p myParam=bar -x local -r -f testSub.pig 这个 -x local 标志指示pig在没有mapreduce集群的情况下在本地运行。

相关问题