00:00
喂,好,那现在我们来开始说一下,就是嗯,我们这个呃,阿斯卡湾大家在使用的过程当中啊,就是遇到的一些问题啊,以及一些这个其他的注意事项啊,首先第一个吧,呃,第一个好的同学,呃,在跑这个这个任务的时候呢,确实出现了一个报错的情况,对吧?呃,这个比如说这一步报错了,或者是哪一步报错了,那之前给大家说过这个咱们怎么做呀。正常怎么做是不是,首先你得来到这个首页对不对,然后呢,找到你对应的那个product对吧,然后点击flow,然后呢,怎么比如说从这报的错对吧,那这时候呢,你用右键把上面那个全部都disable。是不是在这儿去跑啊,对不对,但是你你会发现啊,我这样去跑的时候呢,我会有一个问题。我一跑他是不是又报错了,报错报什么错呀,说什么参数没找到什么的,哎,那是怎么回事,你看啊。咱们之间那有没有川菜?直船了对吧,但是你再从这个位置,再从这开始跑,那他这个参数不就没了呀,对不对,这因为因为什么,因为你这相当于又开启了一个新的一个任务,对吧?那所以说那个参数就没了,你需要再重新设一下这个参数,这是第一点啊,那我能不能就直接接着我上次那个失败的那次任务接着跑呢?能不能啊。
01:14
可以啊,可以,那首先你需要怎么做,需要先找到你之前失败的那个任务在哪找,在history对不对,那接下来呢,我比如说第十次啊,我这个执行的时候,比如说报错了,那OK,我就点这个flow就行,点这。啊,点完这之后呢,假如说你这里边,你甭管他从哪从哪失败了吧,这时候你怎么办啊,呃,点点哪个呀,点这个。Prepare execution,点右上角,就右上角这个你就点它点点完之后你会发现它有一个效果,它是不是会自动默认的把你刚刚成功的那些任务给你disable吧,你看是我这因为都成功了,是不是就都disable了呀,对不对,你假如说你要是最后一个失败了,那这个就不会被disable啊成功的会DC吧,而而且你注意看,这时候你看。
02:00
参数是不是还都在。对不对啊,就是还是你之前那个参数啊,能理解吧,那也就是说你点这个地地方的话,Prepare excution,你就可以直接怎么样,是不是直接点ex excuse,接着你上次这个失败的任务继续跑啊,能理解吧,是这样的啊,所以说这块呢,大家呃,这个可以把这那个记一下,就是这块呢,可以直接就接着你上次失败的那次任务啊,啊,你就不用再重新配参数啊等等这些东西了,这是呃一个问题。呃,然后还有还有其他问题啊,就是有一个地方啊,需要给大家说明一下,说明什么问题呢?就是咱们这个阿兹卡班啊,存在这样的一个小毛病,什么小毛病呢。比如说你看啊,这是咱们阿兹卡班当中的一个任务,对不对,那这个任务咱们是不是掉了一个SH药脚本啊,是不是掉一个山尔脚本啊,那阿兹卡班它是如何去判定你这个任务到底是不是执行成功了呢?他是怎么判定的呀。你这个任务到底有没有成功,阿兹卡班其实是根据什么呀?是根据你这个脚本的最后的输出决定的。
03:07
啊,因为你这个脚本是不是就相当于就是一个cell命令,对不对,一个cell命令这个结束之后是不是会,呃,有一个输出值啊,对吧,那如果输出是零,那说明什么。是不是说明这个脚本是正常的对不对,如果说出是一或者不是零,只要是一个非零的值,那就说明这个任务是这个是这个脚本执行是有问题的,对吧?哎,是这样的啊,那阿兹卡班呢,他就是根据这个去判断你这个任务是否成功的。啊,是这样的。啊,那既然是这样的话,那我们来思考一个这样的问题啊,你像我们现在的每个脚本当中都有什么呀,是不是都有多行多张表,对不对,都有多个表,那既然这样的话呢,那他就会有一个这样的问题了啊那假如说我做张表,我执行到啊一半的时候,假如说这个失败了,对不对,那按照我们之前写的这个失败的,其实下边那个任务呢,他会怎么办?是不是会继续走下一行的shell这个命令啊对不对,那等等等走走走走完了,直到最后一行啊最后一行我是不是执行完毕直接就输出了呀,对不对,然后最后一行这个脚本返回的应该是什么呀?是不是你最后一个下命令它所返回的这个值啊,对吧?诶,只要你最后一个,呃,下我命令返回的值是零。
04:20
那他就认为什么呀,是不是认为你整个脚本是不是都是成功的呀,对不对,那也就是说,即便我这个脚本当中有一部分任务失败了。那阿兹卡文能识别出来吗?识别不出来,它还是会认定你这个整个任务是成功的,那也就是这块是不是还是绿的呀,对不对,还是绿的,那结果呢,但其实这里边其实有一部分是不是没成功,没成功的话下边能成功吗?是不是下边正常应该也是成功不了的呀,因为是有一赖关系的,对吧?啊也是有赖关系的,其实正常到这一步我就应该怎么做,是不是应该爆红,下一步就不执行了呀,对不对,但是这时候阿兹卡班呢,他因为他有一个这样的一个小缺陷啊,他只根据你这个脚本最后的输出是否为零,去判断这个任务是否是成功的啊,那所以说他下一个任务呢,还会尝试着去走,结果走着走着发现爆错了,那这个呢,可能就会爆红的,是这样的啊,也就是说阿兹卡班呢,我们在审用过程当中呢,可能会出现以下这个现象,就是刚才咱们描述的什么现象啊啊,这个任务明明里边呃,有部分任务是失败的,对不对,但是结果这这个图上显示的还是成功的,对吧?啊,有可能会有这样的一个现象。
05:27
啊,有可能是这样的现象啊,那所以说正常情况下,咱们这儿呃,这个脚本应该怎么去怎么去写呀。阿兹卡门的脚本,如果说你真要用阿兹卡门去调度任务,你确实最好应该怎么做呀?最好怎么做呀?啊,你其实最好啊。应该把第一点,你可以这样去做,把这个脚本当中这个表啊全部给它拆开,我拆到是不是一张表一个也就是一一张表一个脚本,一张表一个脚本,对不对,那这样一来是不是这个表报错了,直接这个脚本就错了呀,对不对啊,因为这一张一个脚本当中只有一张表啊,这张表啊,就是不会出现内那种啊,就是部分成功部分失败那种啊,这是第一个,而且这样去做的话呢,我们我们会有什么会有什么现象啊,是不是能够这个提高这个并行度吧,对吧,而且还会更快一些,能理解吧,所以其实正常情况下,咱们呃,比较规范的做法呢,就是呃,一张表一个脚本,一张表一个脚本,这样要好一些啊,这样好一些好,那再一个呢,还可以怎么做,还可以怎么做呀?
06:27
啊,如果说你就不想拆开,你可以怎么做呀?哎,你可以这样去做啊,怎么办呢?在你每一个任务的这个脚本的结尾,这个脚本的结尾,你自己写一段这个,呃,Shell脚,Shell命令,这个命令用来干什么呢?干啥呀。啊干啥呀,就是去查看一下,查看一下什么呀,查看一下你这个脚本当中的所有任务是否真的执行成功了,自己去做这个判断。比如说假如说我现在这个脚本是在往五张表当中导数据,对吧?啊,你肯定往五张表导,是不是导导进来五个分区啊,对吧?哎,你可以去使用have杠一这个命令去查看一下你刚刚打的这五张表的分区,你看一看这五个分区是不是都到都到位了,比如说是不是都有这个这一共五张表,假如说咱们今天是10月29号,那打完之后是不是应该有10月28号的这个分区啊,对吧?你看一看他们是否都有10月28号的分区。
07:22
如果都有,那就说明这个任务是不是成功了呀,对不对,成功了之后,那我就呃,手动的给他RETURN0。啊零,那否则的话呢,那就瑞一,那这个任务成功与否是不是咱们自己控制,那这个阿兹卡曼他就能够准确的识别这个任务是否成功了呀,啊是这样的啊,就是呃,你也可以这样去做啊,所以说这个简单总结一下啊,就是要么你就把这个每个脚本每每个每这个脚本当中的每个表给它分开啊,一张表这个脚本啊,然后最好的话呢,你还可怎么做呀,还可以在每个脚本的结尾的地方呢,你自己加一段这个逻辑判断啊,就判断一下你这个脚本当中的任务是否是真正的执行成功了。
08:01
啊,如果成功了,那OK,我就返回零,否则的话返回一个非零的值就行了啊,那这样一来能够更准确的这个反应出来,咱们这个任务是否成功啊,是这样的啊好,那我现在把这个视频录一下啊。
我来说两句