gpt4 book ai didi

通过 Oozie 的 Shell 脚本

转载 作者:可可西里 更新时间:2023-11-01 16:13:54 24 4
gpt4 key购买 nike

我目前正在创建一个工作流,它将通过 sqoop 自动导入数据。我要做的是验证通过此过程导入的行数(记录)是否准确; sqoop 提供的验证参数在这里不起作用,因为 sqoop 作业没有导入单个表。

我创建了一个名为“validation”的 Action ,它将调用并执行一个名为 validation 的 shell 脚本。此验证脚本执行以下步骤:

  • 使用 sqoop eval 和自由格式查询统计和存储来自 DB 源的行数
  • 在 hdfs 子目录中的不同分区上连接并运行字数统计;这是一个循环函数
  • 它将删除任何具有零行的分区
  • 然后它将评估这两个计数并在失败时强制退出代码,如果为真则返回

但是,当我运行它时,出现以下错误,它没有提供我需要的信息:

2014-09-22 19:03:59,156  INFO ShellActionExecutor:539 - USER[v523043] GROUP[-] TOKEN[-] APP[voipImportToHDFS] JOB[0000359-140905180027053-oozie-oozi-W] ACTION[0000359-140905180027053-oozie-oozi-W@validation] action completed, external ID [null]
2014-09-22 19:03:59,159 WARN ShellActionExecutor:542 - USER[v523043] GROUP[-] TOKEN[-] APP[voipImportToHDFS] JOB[0000359-140905180027053-oozie-oozi-W] ACTION[0000359-140905180027053-oozie-oozi-W@validation] Launcher ERROR, reason: Main class [org.apache.oozie.action.hadoop.ShellMain], exit code [1]
2014-09-22 19:03:59,177 INFO ActionEndXCommand:539 - USER[v523043] GROUP[-] TOKEN[-] APP[voipImportToHDFS] JOB[0000359-140905180027053-oozie-oozi-W] ACTION[0000359-140905180027053-oozie-oozi-W@validation] end executor for wf action 0000359-140905180027053-oozie-oozi-W with wf job 0000359-140905180027053-oozie-oozi-W
2014-09-22 19:03:59,198 INFO ActionEndXCommand:539 - USER[v523043] GROUP[-] TOKEN[-] APP[voipImportToHDFS] JOB[0000359-140905180027053-oozie-oozi-W] ACTION[0000359-140905180027053-oozie-oozi-W@validation] ERROR is considered as FAILED for SLA

我的验证脚本使用命令:

  • sqoop 评估...
  • 列表项

hadoop fs -cat ...

这里是否存在我忽略的兼容性问题?我需要配置不同的东西吗?

我的验证脚本(进行中的版本):

for table in ${tables[*]}
do

#Get the number of records from DB Exadata
verifiedCount=$(sqoop eval --connect $3 --query "SELECT COUNT(*) FROM $4.${tables[table]} WHERE INTRVL_DT = To_Date('$5')" | awk '/([0-9]+)/{print $2}')
#echo "Total Number of Records " $verifiedCount

#Count the number of rows imported


totalRows=0
for ((i=0;i<$mapJobs;i++)) {
count[$i]=$(hadoop fs -cat $6$7/${tables[table]}/$8/$9/$10/part-m-0000$i | wc -l)
totalRows=$((totalRows + ${count[$i]}))
#if value has 0 lines, remove the file from edgenode to limit overhead
if [ ${count[$i]} -eq "0" ]
then
hadoop fs -rmr $6$7/${tables[table]}/$8/$9/$10/part-m-0000$i
echo "Removing..."
fi
}
#echo values
if [ "$totalRows" -eq "$verifiedCount" ]
then
echo "evaluation=true"
evaluation=true
else
echo "evaluation=false"
evaluation=false
exit 40
fi
done

最佳答案

强力错误调试让我发现了以下行的错误:

hadoop fs -rmr $6$7/${tables[table]}/$8/$9/$10/part-m-0000$i

具体来说,-rmr 与环境不协调,导致崩溃。

关于通过 Oozie 的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26002600/

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