gpt4 book ai didi

apache-pig - 在 pig 脚本中执行 shell 命令时出错

转载 作者:行者123 更新时间:2023-12-05 00:33:48 24 4
gpt4 key购买 nike

我有一个 pig 脚本,一开始我想从某个日期生成过去 7 天的日期字符串(后来用于检索那些天的日志文件)。
我尝试用这一行来做到这一点:
% 声明 CMD7 input= ; for i in {1..6}; do d=$(date -d "$DATE -i days" "+%Y-%m-%d"); input="\$input\$d,"; done; echo \$input
我收到一个错误:
"错误 2999: 意外内部错误。执行 shell 命令时出错: input= ; for i in {1..6}; do d=$(date -d "2012-07-10 -i days""+%Y-% m-%d"); input="$input$d,"; done;. 命令退出,退出代码为 127"
但是shell命令在pig之外运行得很好。我真的不确定这里出了什么问题。

谢谢!

最佳答案

我有一个可行的解决方案,但没有你想要的那么精简,基本上我无法让 Pig 在声明中执行复杂的 shell 语句。

我首先写了一个 shell 脚本(我们称之为 6-days-back-from.sh):

#!/bin/bash
DATE=$1
for i in {1..6}; do d=$( date -d "$DATE -$i days" +%F ) ; echo -n "$d "; done

然后一个 pig 脚本如下(我们称之为days.pig):
%declare my_date `./6-days-back-from.sh $DATE`
A = LOAD 'dual' USING PigStorage();
B = FOREACH A GENERATE '$my_date';
DUMP B

请注意,dual 是一个包含单行文本的文本文件的目录,用于显示我们的变量

我调用脚本如下:
pig -x local -param DATE="2012-08-03" days.pig

并得到以下输出:
({(2012-08-02),(2012-08-01),(2012-07-31),(2012-07-30),(2012-07-29),(2012-07-28)})

关于apache-pig - 在 pig 脚本中执行 shell 命令时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11586881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com