通过Pig脚本传递参数时获取错误 [英] Error getting when passing parameter through pig script
问题描述
当我尝试使用属性文件调用Pig脚本时,出现错误:
When I'm trying to invoke pig script with property file then I'm getting error:
pig -P /mapr/ANALYTICS/apps/PigTest/pig.properties -f pig_if_condition.pig
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/mapr/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/mapr/hbase/hbase-0.98.4/lib/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
15/05/20 15:42:52 ERROR pig.Main: ERROR 2999: Unexpected internal error. Unable to parse properties file
'/mapr/ANALYTICS/apps/PigTest/pig.properties' 15/05/20 15:42:52 WARG Pig.Main:没有要写入的日志文件. 15/05/20 15:42:52错误pig.Main:java.lang.RuntimeException:无法解析属性文件 '/mapr/ANALYTICS/apps/PigTest/pig.properties' 在org.apache.pig.Main.run(Main.java:343) 在org.apache.pig.Main.main(Main.java:156) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:606) 在org.apache.hadoop.util.RunJar.main(RunJar.java:212)
'/mapr/ANALYTICS/apps/PigTest/pig.properties' 15/05/20 15:42:52 WARN pig.Main: There is no log file to write to. 15/05/20 15:42:52 ERROR pig.Main: java.lang.RuntimeException: Unable to parse properties file '/mapr/ANALYTICS/apps/PigTest/pig.properties' at org.apache.pig.Main.run(Main.java:343) at org.apache.pig.Main.main(Main.java:156) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
猪脚本是:
test = load '$path' USING PigStorage(',') AS (ip:chararray,country:chararray);
DUMP test;
推荐答案
-param(-p)用于指定单个参数.要指定参数文件,我们必须使用 -param_file 属性.
-param (-p) is to specify a single parameter. To specify parameter file we have to use -param_file attribute.
快捷命令:
- -m与-param_file相同
- -p与-param相同
用法:
pig -param_file {property_file} -f {pig_file}
示例:
pig -param_file a.properties -f a.pig
猪脚本:a.pig
A = LOAD '$INPUT' USING PigStorage(',') AS (country_code:chararray, country_name:chararray);
DUMP A;
属性文件:a.properties
INPUT=a.csv
测试文件:a.csv
IN,India
US,United States
UK,United Kingdom
输出:
(IN,India)
(US,United States)
(UK,United Kingdom)
这篇关于通过Pig脚本传递参数时获取错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!