zoukankan      html  css  js  c++  java
  • 利用shell脚本结合hive语句进行数据加载时的优化

    把hdfs上的文件加载到hive分区表

    version0.1:遍历目录下的所有文件,逐个文件加载,循环次数多,单个文件加载不利于发挥系统io性能

    for file in `hadoop fs -ls /source_path/*/*/*|awk '{print $NF}'`
    do
    #截取天
    day=
    {file:6:8}
    #截取小时
    hour=${file:14:2}
    beeline -e
    "load data inpath 'file' into table table_name partition(p1=day,p2=hour);"
    done

    version0.2:遍历每个小时子目录,批量文件加载,减少了循环次数,提升了系统io利用率

    for file in `hadoop fs -ls -R /source_path/|awk '$NF~//*/[0-2][0-9]$/{print $NF}'`
    do
    #截取天
    day={file:6:8}
    #截取小时
    hour=${file:14:2}
    beeline -e 
    "load data inpath '$file/*' into table table_name partition(p1=day,p2=hour);" 
    done

    version0.3:只需登录一次hive,在version0.2的基础上减少每次登录hive耗费的时间

    for file in `hadoop fs -ls -R /source_path/|awk '$NF~//*/[0-2][0-9]$/{print $NF}'`
    do
    #截取天
    day={file:6:8}
    #截取小时
    hour=${file:14:2}
    str=$str;load data inpath '$file/*' into table table_name partition(p1=day,p2=hour)
    done
    beeline -e $str;
  • 相关阅读:
    [php]php时间戳当中关于时区的问题
    [jQuery] jQuery如何获取同一个类标签的所有的值
    sed 命令基础
    Docker 学习第6课
    Docker 学习第五课
    Docker 学习第四课
    Docker 学习第三课
    Docker 学习第二课
    Docker学习第一课
    XdeBug的使用
  • 原文地址:https://www.cnblogs.com/rabbit168/p/5544425.html
Copyright © 2011-2022 走看看