用 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 下面定時執行就可以了。

這只是一個簡單示例,實際應用的場景可能會稍微復雜一些。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM