Shell 指令碼 定時採集 log 到 Hive

2021-10-13 05:28:06 字數 3183 閱讀 7824

日誌準備

將日誌檔案按照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 測試方法...