【问题标题】:Pig script scheduled by crontab not giving resultcrontab 安排的猪脚本没有给出结果
【发布时间】:2017-07-25 08:52:54
【问题描述】:

我有 pig 脚本,当我从 pig(map reduce 模式)运行时会给出正确的结果,但是当我从 crontab 调度时,不会按照脚本存储输出。

猪脚本是,

a1 = load '/user/training/abhijit_hdfs/id' using PigStorage('\t') as (id:int,name:chararray,desig:chararray); 
a2 = load '/user/training/abhijit_hdfs/trips' using PigStorage('\t') as (id:int,place:chararray,no_trips:int); 
j = join a1 by id,a2 by id;
g = group j by(a1::id,a1::name,a1::desig);`  
`su = foreach g generate group,SUM(j.a2::no_trips) as tripsum; 
ord = order su by tripsum desc; 
f2 = foreach ord generate $0.$0,$0.$1,$0.$2,$1; 
store f2 into '/user/training/abhijit_hdfs/results/trip_output' using PigStorage(' ');

crontab 是,

[training@localhost ~]$ crontab -l
40 3 * * * /home/training/Abhijit_Local/trip_crontab.pig

请指导。

【问题讨论】:

    标签: hadoop cron apache-pig bigdata


    【解决方案1】:

    您的 crontab 正在尝试将 Pig 脚本视为可执行文件并直接运行它。相反,您可能需要明确地通过pig 命令传递它,如Batch Mode 上的Apache Pig 文档中所述。如果您需要排除故障,您可能还会发现将 stdout 和 stderr 输出重定向到某个日志文件很有帮助。

    40 3 * * * pig /home/training/Abhijit_Local/trip_crontab.pig 2>&1 > /some/path/to/logfile
    

    根据PATH 环境变量设置,您可能会发现有必要指定pig 命令的绝对路径。

    40 3 * * * /full/path/pig /home/training/Abhijit_Local/trip_crontab.pig 2>&1 > /some/path/to/logfile
    

    【讨论】:

    • 亲爱的 Chris,感谢您的回答,但请详细说明什么是 PATH 设置,我将在哪里获得绝对路径。
    • 我指的是用于搜索可执行文件的PATH 环境变量。如果拥有此 crontab 的用户已经在 PATH 上拥有了 pig 可执行文件,那么您将不需要绝对路径。如果用户在PATH 上没有pig,那么您需要将其添加到PATH 或使用绝对路径。顺便说一句,我还编辑了答案以添加一些有关将输出重定向到日志文件的信息。
    • 亲爱的 Chris 非常感谢您的指导,我的 crontab 现在正在运行。
    • @user8167344,我很高兴听到它有帮助!
    猜你喜欢
    • 2018-11-30
    • 2020-03-22
    • 2021-05-25
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多