我有 pig 脚本,当我从 pig(map reduce 模式)运行时会给出正确的结果,但是当我从 crontab 调度时不会按照脚本存储输出。
pig 脚本是,
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
请指导。
最佳答案
您的 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
关于hadoop - crontab 计划的 Pig 脚本没有给出结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45298384/