• 监控hadoop任务结果shell脚本


    需求:每日hadoop结果文件中,找出数据不完整的日期和没有跑出数据的日期,重新进行跑hadoop任务

    1. 分析:在result/目录生成的文件中数据有2个特点
      1. 第一:日期有,但是数据不完整
      2. 第二:日期对应的文件不存在(文件缺失)
    #/bin/sh
    # 第一步:先打开结果文件目录(result),将目录的文件存在一个列表中
    time_list=()
    i=0
    dir=`cd ~/result/`
    for i in $dir
    do
        echo $i
        time_list[$i]=$i
        i=$(($i+1))
    done
    # 构建要查询的时间段
    date=20170101
    end_date=20170111  # 注意在这里是前包,后不包
    while [[ $date -lt $end_date ]]
    do
        echo "$date".txt
        # 第二步:判断构建文件是否存在与结果文件的列表中,如果存在,就检查数据量是否位数是否大于9位(单位:bytes)
        if [[ "$time_list" =~ "$date".txt ]];then
            # 计算每个文件的数据量的大小
            data_num=`du -b $i* | awk '{sum += $1}; END{print sum}'`  # 把查询文件量大小的命令赋值给date_num
            echo "command(du -b $i* | awk '{sum += $1}; END{print sum}') results are: $data_num"  # 执行查询命令,并把结果赋值给data_num变量
            echo $data_num
            # echo ${#data_num}
            if [ ${#data_num} -lt 3 ];then  # 判断参选出的数据的位数
                `touch  ~/result/${date}.txt`
            fi
        else
            `touch ~/result/${date}.txt`
        fi
        date=$(($date+1))
    
    done

    小结:当然这个也是调试的时候用的,不过真正,你要根据自己的需求去做,这时,忽然在我的脑子里出现了一个demo侠的名称,因为之前,我看了一篇我们公司内部的写的文章,学习分为几个阶段吧,因为我之前也没有写过shell,所以在写这个需求的时候,起哦也查了很多的资料,发现他们写的都差不多,和我之前写的博客差不多,没有什么干货,都是点演示,俗称demo侠。就是对一个知识点你可能看一遍,演示一遍,觉得知道他是什么意思了,但是真正项目需求用的时候,你就会发现,你是不理解的。所以我在这种情况下,又重新学习了一下,忽然感觉对原来的知识点又了不一样的理解,这时我想起了一篇文章,深度学习分为这么几个阶段:demo侠——>调参侠——>懂原理侠——>懂原理+修改模型细节侠——>超大数据操控侠——>模型/框架架构师,入门级别是懂原理侠。所以学习好事要多思考,结合实际情况去解决问题,去学习,这样的途径是你对知识点掌握最牢靠的,也是理解最透彻的。

  • 相关阅读:
    字符串排序
    java正则表达式教程
    Java Map
    统计字符串中出现次数最多的字母的次数,如果有多个重复的,都求出
    斐波那契数列非递归算法(fibonacci)
    CUDA还未产出,又要出北洋多元统计习题集
    R的GPUTOOLS不能再windows上用
    泪奔,配好了bioconductor环境
    CUDA笔记13
    CUDA笔记12
  • 原文地址:https://www.cnblogs.com/ljc-0923/p/10988422.html
Copyright © 2020-2023  润新知