使用 OSX,我按原样下载了 pig-0.11.1,并在我的 bashrc 中创建了一个别名。我有以下别名:
alias pigalias='/dev/pig-0.11.1/bin/pig -D udf.import.list=org.apache.pig.piggybank.storage.avro -D pig.additional.jars=/dev/avro-1.7.4.jar;/dev/avro-mapred-1.7.4.jar;/dev/json_simple-1.1.jar;/Users/devpig-0.11.1/contrib/piggybank/java/piggybank.jar'
问题是当我运行类似的东西时:
piglias myscript.pig
弹出咕噜咕噜的外壳,但似乎并没有实际执行我的脚本。
注意:我也得到了/dev/avro-mapred-1.7.4.jar: Permission Denied
.该文件设置为 chmod 为 644(为所有人读取)。
更新:在参数周围添加双引号后,我得到一个:
/dev/avro-1.7.4.jar;/dev/avro-mapred-1.7.4.jar;/dev/json_simple-1.1.jar;/Users/devpig-0.11.1/contrib/piggybank/java/piggybank.jar' does not exist.
这些文件显然存在。他们每个人。
包含分号的-D
参数两边加上引号,否则它将终止命令。
alias pigalias='/dev/pig-0.11.1/bin/pig -D udf.import.list=org.apache.pig.piggybank.storage.avro -D "pig.additional.jars=/dev/avro-1.7.4.jar;/dev/avro-mapred-1.7.4.jar;/dev/json_simple-1.1.jar;/Users/devpig-0.11.1/contrib/piggybank/java/piggybank.jar"'
您收到Permission denied
错误,因为您尝试将/dev/avro-mapred-1.7.4.jar
作为程序执行,因为它在分号之后,并且没有执行权限。