本文主要介紹在Linux系統上部署定時器,定時執行shell腳本,通過腳本執行sql文件
sql文件
-- 創建表
create table if not exists iot_test.iot_tac
(
MSISDN string,
TAC string
)
partitioned by(day string)
row format delimited
fields terminated by '\t'
lines terminated by '\n'
stored as parquet;
--錄入數據
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table iot_test.iot_tac
partition(day='${hivevar:day}')
select t4.MSISDN,t4.TAC
from
(select t1.MSISDN,t1.TAC from
(select MSISDN,substr(IMEI,1,8) as TAC,row_number()over(partition by MSISDN) as rn
from prestat.iot_activeuser_hour
where day='${hivevar:day}' and minute='${hivevar:minute}' and IMEI is not null) as t1
left join
(select MSISDN,TAC from iot_test.iot_tac where day='${hivevar:lmonth}') as t2
on t1.MSISDN = t2.MSISDN
where t2.MSISDN is null and t1.rn = 1
union all
select MSISDN,TAC
from iot_test.iot_tac
where day='${hivevar:lmonth}'
) as t4;
${hivevar:day}
接受shell腳本傳來的參數day
shell腳本
#!/bin/bash
source /etc/profile
set -e
echo "**************************************************"
echo "**************************************************"
echo "*********************START************************"
echo "**************************************************"
echo "**************************************************"
day=$(date -d "today -5hours" +%Y%m%d)
minute=$(date -d "today -5hours" +%H00)
lmonth=$(date -d "last month -5hours" +%Y%m%d)
echo $day
echo $minute
echo $lmonth
kinit -kt /home/secu01/cluster_keytab/secu01.keytab secu01
#調用sql
/usr/bin/hive -hivevar cmouth=${day} -hivevar cmouth=${minute} -hivevar lmouth=${lmonth} -f /iot_tac.sql
echo "*************iot_tac.sql調用成功*************"
echo "***************all success****************"
#!/bin/bash
指此腳本使用/bin/bash來解釋執行
day、minute、lmonth
定義的參數,傳遞給sql文件
部署定時
第一步:將shell腳本和sql文件上傳到Linux系統中,shell文件名:iot_tac.sh;sql文件名:iot_tac.sql
第二步:更改shell腳本的權限
chmod u+x iot_tac.sh
第三步:如果sql文件報錯:/bin/bash^M: bad interpreter
sed -i "s/\r//" iot_tac.sql
第四步:設置定時器
(1)增加一個cron定時任務
crontab -e
(2)按insert鍵進入編輯模式
00 * * * * /home/zhangs/iot_tac.sh >/home/zhangs/log/iot_tac.log
表示每小時執行一次shell腳本,并生成日志文件
minute: 區間為 0 – 59
hour: 區間為0 – 23
day-of-month: 區間為0 – 31
month: 區間為1 – 12. 1 是1月. 12是12月.
Day-of-week: 區間為0 – 7. 周日可以是0或7.
(3)按esc鍵退出編輯模式,再按shift+:輸入:wq保存并退出
linux 執行遠程linux上的shell腳本或者命令以及scp 上傳文件到ftp--免密碼登陸
場景:在linux A 上執行Linux B上的shell腳本和命令 步驟1.設置ssh免登陸 1.SSH無密碼登錄 # 本地服務器執行(A機器):生成密鑰對 ssh-keygen -t dsa -P ...
Linux上使用shell腳本查看內存情況(超實用)
#!/bin/bashexport chknum=1 #shell攪拌存放目錄(輸出日志文件執行后也存于該目錄)echo 3 > /wls/wls81/shellsyncwhile [ $chk ...
linux上使用shell腳本查看內存使用率
如上的內存利用率 = [-/+buffers/cache:used]/[Mem:total ] = ?6293404 / 16333656 對于free命令而言,有如下公式: total = used ...
Linux下添加shell腳本使得nginx日志每天定時切割壓縮
Linux下添加shell腳本使得nginx日志每天定時切割壓縮一 簡介 對于nginx的日志文件,特別是access日志,如果我們不做任何處理的話,最后這個文件將會變得非常龐大 這時,無論是出現異常 ...
Linux下定時執行腳本(轉自Decode360)
文章來自:http://www.blogjava.net/decode360/archive/2009/09/18/287743.html Decode360's Blog? 老師(業精于勤而荒于嬉 ...
實用腳本 2 -- Linux下定時執行腳本
今天學習Linux下定時執行腳本,看到一篇講解比較好的文章,特此拿來分享. 原文鏈接:http://www.blogjava.net/decode360/archive/2009/09/18/2877 ...
Linux生產服務器Shell腳本分享
Linux生產服務器Shell腳本分享 2012-6-6?86市場網?linux 作為一名Linux/unix系統管理員,我經常遇到人問這個問題:shell能做什么?PHP這么強大,為什么不用PHP來 ...
mac鏈接linux終端,shell腳本發布代碼
項目的業務需求:從mac端直接連上linux服務終端,并發布相關的代碼 一.使用ssh鏈接上linux服務端 1.cd ~/.ssh 2.vi config,按照下面的內容配置config文件,然后: ...
Java代碼調用服務器上的Shell腳本
Java代碼調用服務器上的Shell腳本 這里主要是因為我們報表平臺有用到用戶手工錄入的數據作為結果數據且需要納入saiku去展示 如我們所知,saiku不會自動刷新,所以需要在數據更新接口中調用服務 ...
隨機推薦
一些用過的我常忘記的小知識(web前端)
背景圖片固定:background-attachment:fixed 將圖片的尺寸從中心點開始改變:backgroun-position:center ? background-size: ** 旋轉 ...
更高效地提高redis client多線程操作的并發吞吐設計
Redis是一個非常高效的基于內存的NOSQL數據庫,它提供非常高效的數據讀寫效能.在實際應用中往往是帶寬和CLIENT庫讀寫損耗過高導致無法更好地發揮出Redis更出色的能力.下面結合一些redis ...
C# 連接SQL數據庫 常用連接字符串
一:C# 連接SQL數據庫 Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myP ...
R學習日記——分解時間序列(非季節性數據)
分解時間序列,就是將一個時間序列拆分成不同的構成元件.一般序列(非季節性序列)包含一個趨勢部分和一個不規則部分(也就是隨機部分),而如果是一個季節性序列,除以上兩個外,還有季節性部分. ? 在此,我們 ...
PHP獲取Post的原始數據方法小結(POST無變量名)
From : http://blog.csdn.net/hotdigger/article/details/6456240 ? 一般我們都用$_POST或$_REQUEST兩個預定義變量來接收POST ...
Python Django 實用小案例2
動態導入模塊 Django返回序列化數據? 動態導入模塊 在Django里面,經常會看到一些方法或者類是動態導入,尤其是以settings文件為代表,經常把一些類放在里面動態調配,比如隨便拿Djang ...
Spring Boot 整合mybatis-generator
Maven 引入 mybatis-generator插件 org.springf ...
mongodb從入門到精通
1.mongodb官網下載文件2.安裝mongodb 3.配置安裝成服務 4.記得連接的時候修改連接的ip地址 5.顯示當前使用的數據庫名——dbs 6.查找所有數據庫——show dbs 7.查找所 ...
autocomplete 自動填充 combobox
目錄(?)[-] autocomplete有兩種 一種 是 jquery ui里的?autocomplete?httpjqueryuicomautocomplete 另一種是 ASPNET AJAX ...