【发布时间】:2015-06-23 21:55:52
【问题描述】:
我在亚马逊 EMR 上将 Hue 用于 PIG 脚本。我想进行 shell 调用以将特定时区中的日期转换为变量,我将使用该变量来定义输出文件夹路径以将输出写入。最终我想使用if else fi 循环从一周中获取特定日期,因此将在命令中的各个位置提及时区。
示例脚本
ts = LOAD 's3://testbucket1/input/testdata-00000.gz' USING PigStorage('\t');
STORE ts INTO 's3://testbucket1/$OUTPUT_FOLDER' USING PigStorage('\t');
Hue中Pig参数定义:
- 这有效:输出文件夹 = `/bin/date +%Y%m%d`
- 这不起作用:输出文件夹 = `TZ=America/New_York /bin/date +%Y%m%d`
这两个命令都可以在 bash shell 中完美执行。但是第二个命令给出了以下错误:
2015-06-23 21:43:42,901 [main] INFO org.apache.pig.tools.parameters.PreprocessorContext - 执行命令:TZ=America/Phoenix /bin/date +%Y%m%d 2015-06-23 21:43:42,913 [main] 错误 org.apache.pig.Main - 错误 2999:意外的内部错误。执行 shell 命令时出错:TZ=America/Phoenix /bin/date +%Y%m%d。退出代码为 126 的命令退出
From the GNU manual:如果找到命令但不能执行,返回状态为126。
我该如何解决这个问题?
配置详情:
- AMI 版本:3.7.0
- Hadoop 发行版:Amazon 2.4.0
- 应用:Hive 0.13.1、Pig 0.12.0、Impala 1.2.4、Hue
- 底层外壳:bash
- 用户:hadoop(使用 Pig 和 Bash 时)
如果您需要任何澄清,请对此问题发表评论。我会根据需要更新它。
【问题讨论】:
-
它可能不喜欢
New_York和/bin之间的空格 -
日期和“+%Y%m%d”之间有一个空格,所以Pig似乎不太可能在shell命令中不使用空格。
标签: bash shell hadoop apache-pig hue