转载: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 '\t'
lines terminated by '\n'
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 '\t'
lines terminated by '\n'
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
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【云周刊】第187期:阿里推出 PolarFS 分布式文件系统:将存储与计算分开,提升云数据库性能
本期头条 阿里推出 PolarFS 分布式文件系统:将存储与计算分开,提升云数据库性能 将存储与计算分开来大有意义,对于部署的云数据库而言更是如此。为此,阿里巴巴推出了一种新开发的名为PolarFS的分布式文件系统,旨在确保低延迟和高可用性。这个文件系统与阿里云上自己的PolarDB数据库服务搭配使用。像PolarDB这样的云数据库服务(或者各大云提供商的平台上的同类云数据库服务)拥有一个更具可扩展性且安全的基础以便充分利用容器,并以快速I/O、检查点和数据共享来支持后端存储集群,从而充分发挥将存储资源和计算资源分开来的这种做法具有的好处。点击查看 全球区块链专利榜,阿里蝉联冠军 阿联酋深化与支付宝合作,迪拜多店可刷支付宝 马云亮相亚运会闭幕式,向全世界发出邀请! 助力非洲数字化转型,阿里巴巴与卢旺达合作推进eWTP 印尼总统会谈马云:用互联网
- 下一篇
一个数据库迁移案例解析
点击可以看大图。 迁移需求描述 迁移中遇到的问题 迁移步骤
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- MySQL8.0.19开启GTID主从同步CentOS8
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Hadoop3单机部署,实现最简伪集群