【问题标题】:Restarting Failed Scripted Queries in Impala Shell在 Impala Shell 中重新启动失败的脚本查询
【发布时间】:2016-06-21 15:04:59
【问题描述】:

我一直在查看 Impala Shell 文档,但没有找到解决此问题的任何内容。我有一个运行 Impala 查询然后发送包含查询结果的电子邮件的 bash 脚本。问题是,每隔一段时间查询就会失败;发生这种情况时,脚本的下一行将启动,并通过电子邮件发送一个空白的 CSV 文件。是否可以对 Impala Shell 脚本本身或框架 bash 脚本进行修改来解决这个问题?我最初的想法是,如果 CSV 文件为空,则让脚本重新运行查询,但如果查询合法地没有产生任何结果,这会使脚本陷入循环。

有什么建议吗?

这是脚本现在的样子:

#!/bin/bash

NOW=$(date +"%F")
NAME="001"

impala-shell -i servername.com -B --output_delimiter=',' -o ../$NAME/$NAME.csv -f ../$NAME/001.sql

cat ../$NAME/$NAME/001.header > ../$NAME/$NAME-$NOW.csv
cat ../$NAME/$NAME.csv >> ../$NAME/$NAME-$NAME.csv

cat ../$NAME.email | mailx -a ../$NAME/$NAME-$NOW.csv -a ../$NAME.sql -s "Email subject" -r "Alias<from@email.com>" to@email.com

【问题讨论】:

    标签: bash hadoop impala


    【解决方案1】:

    由于它是一个 bash 脚本,您可以添加逻辑来检查您上次执行的命令的退出代码。因此,如果您的 impala shell 命令运行良好,那么它将返回退出代码 0,如果出现错误,那么它应该返回 0 以外的退出代码(如果他们正确开发了它)。我已经阅读了一些关于 impala 查询出错但仍然给出代码退出代码的帖子,所以你可能需要弄乱它。下面的示例将循环直到 impala 语句成功运行,因此可能需要添加某种重试计数逻辑

    impala-shell -i servername.com -B --output_delimiter=',' -o ../$NAME/$NAME.csv -f ../$NAME/001.sql
    while [ $? -ne 0 ]
    do
    impala-shell -i servername.com -B --output_delimiter=',' -o ../$NAME/$NAME.csv -f ../$NAME/001.sql
    done
    

    2 次尝试后退出的运行计数逻辑示例

    runCnt=0
    impala-shell -i servername.com -B --output_delimiter=',' -o ../$NAME/$NAME.csv -f ../$NAME/001.sql
    while [ $? -ne 0 ]
    do  
    runCnt=$(($runCnt + 1))
        if [ $runCnt -eq 2 ]
        then
            exit 1
        else
            impala-shell -i servername.com -B --output_delimiter=',' -o ../$NAME/$NAME.csv -f ../$NAME/001.sql
        fi
    done
    

    【讨论】:

    • 这很好用,谢谢!我将它添加到我的一个脚本中并故意导致查询失败(并行运行另一个查询会耗尽内存),并且 bash 脚本中的循环重新启动了 Impala Shell 命令。
    • 很高兴它成功了。请记住,如果某些东西被破坏,这将只是一个无限循环,因此将一些逻辑运行一定次数可能是个好主意。
    • 在我的回答中添加了运行计数和退出逻辑
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 2022-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多