转载:linux下大数据人工智能自动化脚本定时任务模板

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介:


转自:

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

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
1月前
|
安全 Linux iOS开发
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
142 6
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
|
2月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
414 9
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
290 0
Linux系统初始化脚本
|
2月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
302 2
|
2月前
|
数据采集 传感器 人工智能
没有大数据,哪来人工智能?——聊聊“大数据喂养下的AI进化史”
没有大数据,哪来人工智能?——聊聊“大数据喂养下的AI进化史”
179 6
|
4月前
|
人工智能 自动驾驶 大数据
“AI再聪明,也得靠大数据喂饱它”:聊聊大数据与人工智能的双剑合璧
“AI再聪明,也得靠大数据喂饱它”:聊聊大数据与人工智能的双剑合璧
327 2
|
4月前
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
539 1
|
6月前
|
Java Linux
自定义linux脚本用于快速jar包启动、停止、重启
自定义linux脚本用于快速jar包启动、停止、重启
323 29
|
1月前
|
数据采集 运维 监控
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
本文系统解析爬虫与自动化核心技术,涵盖HTTP请求、数据解析、分布式架构及反爬策略,结合Scrapy、Selenium等框架实战,助力构建高效、稳定、合规的数据采集系统。
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南

热门文章

最新文章