轉載:linux下大資料人工智慧自動化指令碼定時任務模板
轉自:
https://mp.weixin.qq.com/s/mXXJmDqtv7PyqglN9ekvNQ
本文針對有初級sql及python人工智慧開發基礎,需要執行定時任務的初學人員。
假設在工作中,要執行一個任務,大致要求如下:
一、每月執行一次定時任務;
二、用hive處理資料,並下載;
三、用python讀取資料,送入機器學習演算法訓練,預測結果,儲存結果;
四、讀取預測結果,上傳到資料庫指定位置,並按月分割槽
(一)、關於定時任務crontab,命令網上可以搜到很多用法。在這裡有一個坑需要注意,就是直接執行shell指令碼時用到的python環境路徑,可能與定時任務的python路徑不同,導致執行指令碼時報錯,找不到模組。這裡有一個小方法,寫一個python程式test.py。
import sys
print(sys.path)
python test.py與crontab -e各執行一次,就可以看到兩次路徑是否相同了。還有一點,就是關於註冊資訊的問題,
kinit -kt /home/accunt/cluster_keytab/accunt.keytab accunt中的accunt是你自己的賬戶,沒有這句話,程式也會報錯。所以建議專門寫一個定時任務,每隔幾個小時執行一次該命令。
(二)、程式中經常會涉及到變數,比較常見的是時間變數,這樣才能做到自動化,train_month_t=$(date +%Y%m -d `-1 month`)這句話意思是,獲取執行程式時的月份的前一個月,‘$’是定義一個變數,用$train_month_t傳入sql語句中。exportHIVE_SKIP_SPARK_ASSEMBLY=true; 這句話的作用是在下載資料時,保證資料能夠下載齊全。
(三)、為了降低shell指令碼的篇幅,可以將python部分以子檔案形式執行。這裡為了防止在定時任務時,python路徑不統一,使用python的環境路徑執行程式。通過sys.argv[1]將引數$py_month傳進去。這裡的月份形式是`201808`,傳進去是字串格式。
(四)、在資料庫裡建表,並將通過人工智慧預測好的資料,上傳到指定分割槽。
下面是模板內容:
#!/bin/bash
kinit -kt /home/accunt/cluster_keytab/accunt.keytab accunt
echo “***************************”
train_month_t=$(date +%Y%m -d `-1 month`)
echo $train_month_t
echo “*************start*************”
sql_train=“
create table if not exists test.t_test
(a string,
b string)
row format delimited fields terminated by ` `
lines terminated by `
`
stored as textfile;
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table test.t_test
select a,b
from product.t_test
where day=concat(`$train_month_t`,`01`);
“
echo $sql_train >./train.sql
kinit -kt /home/accunt/cluster_keytab/accunt.keytab accunt
hive -f ./train.sql
export HIVE_SKIP_SPARK_ASSEMBLY=true;
hive -e “set hive.cli.print.header=true;
select distinct a,b from test.t_test;” >./train.csv
echo “*************train sql successful************”
kinit -kt /home/accunt/cluster_keytab/accunt.keytab accunt
./python ./train_pred.py $py_month
echo “*************py successful************”
load_sql=“
create table if not exists test.result
(a string,
b string)
partitioned by (month string)
row format delimited fields terminated by ` `
lines terminated by `
`
stored as textfile
tblproperties(`skip.header.line.count`=`1`);
LOAD DATA LOCAL INPATH `./preds_$load_month.csv`
into table test.result PARTITION (month=`$load_month`);
“
echo $load_sql>./load.sql
kinit -kt /home/accunt/cluster_keytab/accunt.keytab accunt
hive -f ./load.sql
echo “*************load_sql successful************”
echo “*************successful************”
至此,一個簡單的大資料人工智慧預測分析指令碼模板完成了,希望能有所幫助,並指出不足之處,共同進步!
轉自:
https://mp.weixin.qq.com/s/mXXJmDqtv7PyqglN9ekvNQ
相關文章
- Linux Crontab Shell指令碼實現秒級定時任務Linux指令碼
- Linux 定時任務Linux
- Linux | 定時任務Linux
- 自動定時備份 mysql 資料庫 的 shell 指令碼MySql資料庫指令碼
- Python定時任務前端專案本地自動打包遠端部署指令碼實現Python前端指令碼
- Spring+quartz實現動態化定時任務 (轉)Springquartz
- Linux crontab 定時任務Linux
- DevOps 自動化實踐 - 定時任務監控的進化之路dev
- JMeter 介面自動化測試(手工轉自動化指令碼)JMeter指令碼
- linux啟定時指令碼Linux指令碼
- linux定時任務cron配置Linux
- Linux 定時任務排程Linux
- Linux系統中延時任務及定時任務Linux
- MYSQL定時任務-定時清除備份資料MySql
- Linux下Mysql定時自動備份LinuxMySql
- 8.4linux定時任務-環境變數-資料庫Linux變數資料庫
- 定時任務不在硬編碼,動態定時刷起來
- 如何使用 cron 任務在 Linux 中計劃和自動化任務Linux
- 函式計算自動化運維實戰1 -- 定時任務函式運維
- Zeit – Linux圖形化中定時任務的工具Linux
- xtrabackup備份mysql以及建立自動定時任務MySql
- 排查linux 定時任務cron crontabLinux
- linux系統怎麼新增每天定時任務? linux系統新增定時任務的教程Linux
- 《轉載》Jenkins持續整合-自動化部署指令碼的實現《python》Jenkins指令碼Python
- Linux下的crontab定時執行任務命令詳解Linux
- Mysql定時備份資料指令碼MySql指令碼
- Android開發 定時任務清理資料Android
- Linux基礎服務巡檢指令碼模板Linux指令碼
- specjvm自動化指令碼JVM指令碼
- Linux 定時執行指令碼、命令Linux指令碼
- Linux定時執行.sh指令碼Linux指令碼
- vbs指令碼和windows定時任務實現qq訊息表情包定時傳送指令碼Windows
- linux實現一個定時任務Linux
- linux 定時任務替代大牛 工具 cronsunLinux
- Linux系統管理之定時任務Linux
- Linux中如何實現定時任務Linux
- linux定時任務的設定 crontab 配置指南Linux
- linux設定開機自啟動指令碼的最佳方式Linux指令碼