如何每日增量載入資料到Hive分割槽表

2022-08-19 20:54:10 字數 1606 閱讀 3438

hadoop

hive

shell

crontab

資料載入到hive分割槽表(兩個分割槽,日期(20160316)和小時(10))中

每日載入前一天的日誌檔案資料到表db_track.track_log

資料日誌檔案,放入某個目錄下,每天日誌檔案放入同乙個目錄

eg: 20160316 - 目錄名稱

日誌檔案資料,每個小時生成乙個檔案,一天總共有二十四個檔案

eg: 2016031820

負責排程的shell指令碼load_tracklogs.sh

注:這裡涉及到了兩個點:1)for迴圈 2) linux下字串的擷取$ 3) 傳遞引數到hive的sql指令碼

#!/bin/sh

## 環境變數生效

. /etc/profile

## hive home

hive_home=/opt/cdh5.3.6/hive-0.13.1-cdh5.3.6

## 日誌目錄

log_dir=/data/tracklogs

## 目錄名稱, 依據日期date獲取

yesterday=`date -d -1days '+%y%m%d'`

###

for line in `ls $log_dir/$`

doecho

"loading $line .............."

#從檔名稱中解析出日期和小時

daily=$$$

hour=$

load_file=$/$/$

### echo $daily + $hour

### $/bin/hive -e "load data local inpath '$' overwrite into table db_track.track_log partition(date = '$', hour = '$') ;"

$/bin/hive --hiveconf load_file_param=$ --hiveconf daily_param=$ --hiveconf hour_param=$

-f /home/hadoop/load_data.sql

done

負責載入資料的sql指令碼

注: 怎麼在hql指令碼中獲取外接傳遞的引數

load data local inpath '$' overwrite into table db_track.track_log partition(date = '$', hour = '$') ;

制定每天定時執行

可以在當前使用者下直接建立:crontab -e

注:crontab中的五個 *號分別代表分,時,日,月,周,下面的例子就是每天晚上1點30執行任務的例子,注意sh命令前一般需要加上絕對路徑

# lodad data into track_log

301 * * * /bin/sh /home/hadoop/load_tracklogs.sh

如何每日增量載入資料到Hive分割槽表

載入資料 資料載入到hive分割槽表 兩個分割槽,日期 20160316 和小時 10 中 每日載入前一天的日誌檔案資料到表db track.track log 資料儲存 說明 資料日誌檔案,放入某個目錄下 每天日誌檔案放入同乙個目錄 20160316 目錄名稱 日誌檔案資料,每個小時生成乙個檔案,...

sqoop定時增量抽取資料到hive

1 第一次全量抽取,並建立hive表 keberos認證 kinit kt hdfs.keytab hdfs 從oracle導資料到hive sqoop import connectjdbc oracle thin xx.xx.xx.xx 1521 xx username password tabl...

載入中 Excel中如何載入資料到模型

從傳統的excel資料操作,到bi智慧型分析,載入資料到資料模型是第一步,這幾乎是個小白問題,可是架不住有好幾個人問,那就來扯扯.1.excel端直接載入 這個選單功能,非常明顯,很容易找到 2.模型端載入資料 選擇把資料直接載入到資料來源的方式,適合原始資料比較規整的情況。3.從pq過度後載入 如...