日誌準備
將日誌檔案按照mqtt_yyyymm-dd-hh
的樣式滾動生成,也就是每小時滾動一次。
mqtt_202101-07-10.log
mqtt_202101-07-11.log
mqtt_202101-07-12.log..
....
hive 建表
在將資料匯入hive之前,必須先按照資料的字段格式,預先建立hive表。show create table tablename
create table `mqttdata`(
`no` string comment 'from deserializer'
, `num` string comment 'from deserializer'
, `time` string comment 'from deserializer'
, `l/n` int comment 'from deserializer'
, `ca001` int comment 'from deserializer'
, `ca002` int comment 'from deserializer'
, `ca003` int comment 'from deserializer'
, `ca004` int comment 'from deserializer'
, `ca005` int comment 'from deserializer'
, `ca006` int comment 'from deserializer'
, `ca007` int comment 'from deserializer'
, `ca008` int comment 'from deserializer'
, `ca009` int comment 'from deserializer'
, `ca010` int comment 'from deserializer'
, `ca011` int comment 'from deserializer'
, `ca012` int comment 'from deserializer'
, `ca013` int comment 'from deserializer'
, `ca014` int comment 'from deserializer'
, `ca015` int comment 'from deserializer'
, `ca016` int comment 'from deserializer'
, `ca017` int comment 'from deserializer'
, `ca018` int comment 'from deserializer'
, `ca019` int comment 'from deserializer'
, `ca020` int comment 'from deserializer'
, `ca021` int comment 'from deserializer'
, `ca022` int comment 'from deserializer'
, `ca023` int comment 'from deserializer'
, `ca024` int comment 'from deserializer'
, `ca025` int comment 'from deserializer'
, `ca026` int comment 'from deserializer'
, `ca027` int comment 'from deserializer'
, `ca028` int comment 'from deserializer'
, `ca029` int comment 'from deserializer'
, `ca030` int comment 'from deserializer'
, `ca031` int comment 'from deserializer'
, `ca032` int comment 'from deserializer'
, `ca033` int comment 'from deserializer'
)partitioned by (
`ym` string,
`d` string,
`h` string)
row format serde
'org.openx.data.jsonserde.jsonserde'
stored as inputformat
'org.apache.hadoop.mapred.textinputformat'
outputformat
'org.apache.hadoop.hive.ql.io.hiveignorekeytextoutputformat'
location
'hdfs:'
tblproperties (
'transient_lastddltime'='1609987429'
)
shell 指令碼
由於log是按照小時來滾動生成的,所以我們延遲乙個小時來執行對應load操作。
首先通過date語句來獲得systime;然後將年月ym
、日d
、小時h
由systime拆分獲得;最後,通過執行hive語句,來實現log匯入hive的過程。
#!/bin/bash
systime=`date -d "-1 hour"
+%y%m-%d-%h `
ym=`echo $
| awk -f '-'
''`d=`echo $
| awk -f '-'
''`h=`echo $
| awk -f '-'
''`hive -e "load data local inpath '/root/data/mqtt_$-$-$.log' into table hive_test.mqttdata partition(ym='$',d='$',h='$')"
shell 定時指令碼
很多時候我們有希望伺服器定時去執行乙個指令碼來觸發乙個操作,比如說定時去備份伺服器資料 資料庫資料等 不適合人工經常做的一些操作這裡簡單說下 shell shell俗稱殼,類似於dos下的command和後來的cmd.exe。它接收使用者命令,然後呼叫相應的應用程式。作為命令語言,它互動式解釋和執行...
定時清理檔案shell指令碼
乙個測試機上部署多個應用,總是經常出現磁碟空間已滿,不能部署應用的情況,所以寫了個小指令碼,用於定時清理日誌,避免出現這種情況。1 如果是清理固定路徑下的檔案,可以直接用命令方式。命令方式 1 編寫命令 find logs name catalina.out log and mtime 7 測試方法...
定時清理檔案shell指令碼
乙個測試機上部署多個應用,總是經常出現磁碟空間已滿,不能部署應用的情況,所以寫了個小指令碼,用於定時清理日誌,避免出現這種情況。1 如果是清理固定路徑下的檔案,可以直接用命令方式。命令方式 1 編寫命令 find logs name catalina.out log and mtime 7 測試方法...