Spark 任务提交脚本

说明

该脚本是根据输入起始日期-结束日期,执行从数据库拉取日期间隔数据到HDFS。日期间隔中的日期就是每一年的自然日。

日期格式可以是以下几种:
2018-01-01 2018-12-31  [-][/][.]['']
2018/01/01 2018/12/31    [-][/][.]['']
20180101 20181231       [-][/][.]['']

代码片段

if [[ $# -le 2 || $# -gt 3 ]]; then
    echo "Usage: $0 2018-01-01 2018-12-31 or $0 2018/01/01 2018/12/31 or $0 20180101 20181231 [-][/][.]['']"
    exit 1
fi

START_DAY=$(date -d "$1" +%s)
END_DAY=$(date -d "$2" +%s)
SPLITER=${3}

declare -a DATE_ARRAY

function getDateRange 
{
    if [[ $# -ne 3 ]]; then
        echo "Usage: getDateRange 2018-01-01 2018-12-31 or getDateRange 2018/01/01 2018/12/31 or getDateRange 20180101 20181231 [-][/][.]['']"
        exit 1
    fi
    
    START_DAY_TMP=${1}
    END_DAY_TMP=${2}
    SPLITER_TMP=${3}
    I_DATE_ARRAY_INDX=0
    
    while (( "${START_DAY_TMP}" <= "${END_DAY_TMP}" )); do
        cur_day=$(date -d @${START_DAY_TMP} +"%Y${SPLITER_TMP}%m${SPLITER_TMP}%d")
        DATE_ARRAY[${I_DATE_ARRAY_INDX}]=${cur_day}
        
        START_DAY_TMP=$((${START_DAY_TMP}+86400))
        ((I_DATE_ARRAY_INDX++))
        
    done
}

getDateRange "${START_DAY}" "${END_DAY}" "${SPLITER}"

. /etc/profile.d/custom.sh 

for SINGLE_DAY in ${DATE_ARRAY[@]};
do

  #replace your task command in this line echo `spark-submit --master yarn --deploy-mode client --packages "mysql:mysql-connector-java:6.0.6" --num-executors 4 --executor-memory 4G --class "com.cm.data.datasync.ReadLogDb2HDFS" /home/ubuntu/target/data_analysis-1.0.1.jar order_log_${SINGLE_DAY} 4` done exit 0

 

下载地址:Shell

最后奉送 nohub 方式命令 ./spark_submit_script.sh 20180101 20180823 '' > spark_task_2018.out 2>&1 &

一样的颜色的地方可以使用 [-][/][.][''] 替换

posted @ 2018-08-22 16:58  阿東哥©  阅读(165)  评论(0编辑  收藏  举报