zoukankan      html  css  js  c++  java
  • 用 shell 脚本自动给 hive 表添加分区加载数据

    #!/bin/bash

    #自动加载前一天的离线数据

    #获得前一天的日期

    yesterday=`date -d "-1 day" +%Y%m%d`

    #定义变量,给定数据文件的路径
    access_log_dir=/opt/datas/test_hive_access_logs/${yesterday}

    #给出 hive 的安装目录
    HIVE_HOME=/opt/moudles/apache-hive-0.13.1-bin

    #统计文件夹下文件的个数。其实是想判断一下文件夹是不是为空。
    count=`ls ${access_log_dir} | wc -l`

    #文件夹目录存在,并且目录不为空,执行逻辑,加载数据。

    if [ -d ${access_log_dir} -a ${count} -gt "0" ]; then
    echo "${count} files exists."
    for file in `ls ${access_log_dir}`
    do
    day=${file:0:8}
    hour=${file:8:2}
    echo "${day} : ${hour}"

    # hive 表是一个二级分区表,一级分区是日期,二级分区是小时。
    ${HIVE_HOME}/bin/hive -e "load data local inpath '${access_log_dir}/${file}' into table load_to_hive.load_to_hive_test partition(date='${day}',hour='${hour}')"
    done
    else

    #目录不存在,或者目录是空的,就不执行加载动作了。
    echo "directory : ${access_log_dir} does not exists."
    echo "${count} files exists."
    fi

    有了这个脚本之后,只要把它挂在 crontab 下面定时执行就可以了。

    这只是一个简单示例,实际应用的场景可能会稍微复杂一些。

  • 相关阅读:
    Android编译相关资料的网址
    npm项目编译
    JAVA项目编译
    docker 常用命令[转载]
    jenkins安装的时候 提示字体问题的解决方法
    deployment
    kube-proxy运行机制分析【转载】
    kubelet tls
    js执行上下文和执行栈
    js事件循环(event loop)
  • 原文地址:https://www.cnblogs.com/rabbit624/p/10677229.html
Copyright © 2011-2022 走看看