Apache Airflow (十一) :HiveOperator及调度HQL

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客
🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。
🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频
目录
1. HiveOperator配置
2. HiveOperator调度HQL案例
1. HiveOperator配置
可以通过HiveOperator直接操作Hive SQL ,HiveOperator的参数如下:
hql(str):需要执行的Hive SQL。hive_cli_conn_id(str):连接Hive的conn_id,在airflow webui connection中配置的。
想要在airflow中使用HiveOperator调用Hive任务,首先需要安装以下依赖并配置Hive Metastore:
#切换Python37环境[root@node4 ~]# conda activate python37#安装hive provider package(python37) [root@node4 ~]# pip install apache-airflow-providers-apache-hive==2.0.2#启动airflow(python37) [root@node4 ~]# airflow webserver --port 8080(python37) [root@node4 ~]# airflow scheduler
登录Airflow webui并设置Hive Metastore,登录后找到”Admin”->”Connections”,点击“+”新增配置:

2. HiveOperator调度HQL案例
1) 启动Hive,准备表
启动HDFS、Hive Metastore,在Hive中创建以下三张表:
create table person_info(id int,name string,age int) row format delimited fields terminated by '\t';create table score_info(id int,name string,score int) row format delimited fields terminated by '\t';
向表 person_info加载如下数据:
1 zs 182 ls 193 ww 20
向表score_info加载如下数据:
1 zs 1002 ls 2003 ww 300
2) 在node4节点配置Hive 客户端
由于Airflow 使用HiveOperator时需要在Airflow安装节点上有Hive客户端,所以需要在node4节点上配置Hive客户端。
将Hive安装包上传至node4 “/software”下解压,并配置Hive环境变量
#在/etc/profile文件最后配置Hive环境变量export HIVE_HOME=/software/hive-1.2.1export PATH=$PATH:$HIVE_HOME/bin#使环境变量生效source /etc/profile
修改HIVE_HOME/conf/hive-site.xml ,写入如下内容:
<configuration><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property><property><name>hive.metastore.local</name><value>false</value></property><property><name>hive.metastore.uris</name><value>thrift://node1:9083</value></property></configuration>
3) 编写DAG python配置文件
注意在本地开发工具编写python配置时,需要用到HiveOperator,需要在本地对应的python环境中安装对应的provider package。
C:\Users\wubai>d:D:\>cd d:\ProgramData\Anaconda3\envs\python37\Scriptsd:\ProgramData\Anaconda3\envs\python37\Scripts>pip install apache-airflow-providers-apache-hive==2.0.2注意:这里本地安装也有可能缺少对应的C++环境,我们也可以不安装,直接跳过也可以。
Python配置文件:
from datetime import datetime, timedelta
from airflow import DAG
from airflow.providers.apache.hive.operators.hive import HiveOperatordefault_args = {'owner':'wangwu','start_date':datetime(2021, 9, 23),'retries': 1, # 失败重试次数'retry_delay': timedelta(minutes=5) # 失败重试间隔
}dag = DAG(dag_id = 'execute_hive_sql',default_args=default_args,schedule_interval=timedelta(minutes=1)
)first=HiveOperator(task_id='person_info',hive_cli_conn_id="node1-hive-metastore",hql='select id,name,age from person_info',dag = dag
)second=HiveOperator(task_id='score_info',hive_cli_conn_id="node1-hive-metastore",hql='select id,name,score from score_info',dag=dag
)third=HiveOperator(task_id='join_info',hive_cli_conn_id="node1-hive-metastore",hql='select a.id,a.name,a.age,b.score from person_info a join score_info b on a.id = b.id',dag=dag
)first >> second >>third
4) 调度python配置脚本
将以上配置好的python文件上传至node4节点$AIRFLOW_HOME/dags下,重启Airflow websever与scheduler,登录webui,开启调度:

调度结果如下:



相关文章:
Apache Airflow (十一) :HiveOperator及调度HQL
🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹…...
SpringBoot-Docker容器化部署发布
在生产环境都是怎么部署 Spring Boot? 打成 jar 直接一键运行打成 war 扔到 Tomcat 容器中运行容器化部署 一、准备Docker 在 CentOS7 上安装好 Docker 修改 Docker 配置,开启允许远程访问 Docker 的功能,开启方式很简单,修改 /usr/lib/s…...
重生奇迹mu格斗怎么加点
1.力量加点 力量是格斗家的主要属性之一,它可以增加你的攻击力和物理伤害。因此,对于格斗家来说,力量加点是非常重要的。建议在前期将大部分的加点放在力量上,这样可以让你更快地杀死怪物,提高升级速度。 2.敏捷加点…...
「浙江科聪新品发布」新品发布潜伏顶升式移动机器人专用控制器
聚焦专用车型 最小专用控制器 控制器只占整机5%,纵向出线方式,占比更小 更易插拔 整体解决方案 更具价格优势 提供整体解决方案,配套各类型产品设备及车体厂家 打造持久稳定使用 坚持工业级品质 采用车规级接口,不用其它类不可…...
大数据学习(22)-spark
&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦ᾑ…...
String类常用方法总结
目录 一.简单认识String 二.String对象的比较 1.equals 内部实现原理: 2.compareTo 3.compareToIgnoreCase 三.字符串查找 示例: 四.字符串与其他类型转化 1.数值和字符串相互转换 2.大小写相互转化 3.字符串转数组 4.格式化转化 五.字符串…...
TensorFlow实战教程(二十八)-Keras实现BiLSTM微博情感分类和LDA主题挖掘分析
从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前一篇文章通过Keras深度学习构建CNN模型识别阿拉伯手写文字图像,一篇非常经典的图像分类文字。这篇文章将结合文本挖掘介绍微博情感分类知识,包括数据预处理、机器学习和深度学习的情感分类,后续结…...
个人博客添加访问人数以及访问时间-githubpage
layout: post # 使用的布局(不需要改) title: 个人博客添加访问人数以及访问时间 # 标题 subtitle: 个人博客优化 #副标题 date: 2023-11-18 # 时间 author: BY ThreeStones1029 # 作者 header-img: img/about_bg.jpg #这篇文章标题背景图片 catalog: tr…...
Django--重定向redirect
在 Django 中,redirect 是一个用于进行重定向的函数。它允许你将用户从一个 URL 重定向到另一个 URL,通常用于处理表单提交、用户登录、用户注册等操作后的页面跳转。redirect 函数属于 django.shortcuts 模块。 以下是 redirect 函数的基本用法和一些参…...
在html和css中的引用svg(一)
问题:如何让 DIV 中的svg垂直居中? HTML 代码: <div class"content"><svg ...> ... </svg></div> CSS代码: .content svg { vertical-align: middle;} 实用扩展:如何让 DIV 中…...
C/C++ 实现:自然排序:针对两个需要排序的字符串,不仅逐个比较每个字符的顺序,对于连在一起的数字字符会作为一个完整数字进行比较 某知名企业的笔试题
目录 题目描述: 分析: 代码实现: 完整代码: 运行结果: 题目描述: 下面是一个自然排序函数的声明,请实现该函数; 自然排序是指:针对两个需要排序的字符串,不仅逐个比较每个...
sse实时通信
使用原因:用户网络环境较差,之前使用ws总是出现断连重连,导致数据总是不能实时更新,所以更换为sse npm install event-source-polyfill createWebSocket:创建sse连接 getWebSocketMsg:接收sse消息 impo…...
Qt专栏3—Qt项目创建Hello World
setp1 打开软件 双击Qt Creator 11.0.3 (Community),打进入软件界面 step2 创建项目 点击创建项目 step3 选择模板 选着Application(Qt)->Qt Widgets Application setp4 设置项目 名称中填入项目号名,创建路径中填入项目保存位…...
linux输出的重定向无效问题和解决
我们在调试程序或者打印日志时经常会遇到重定向的问题,而有时候会遇到重定向无效的问题,下面给一个简单的例子,首先写一个简单的test.c #include <stdio.h>int main(){fprintf(stdout, "hello\n");fprintf(stderr, "world\n");return 0; }编译生…...
chromium114添加新的语言国际化支持
一、需求说明 需要chromium114支持新语言体系,例如藏语,蒙古语,苗语等 二、操作步骤 1. build/config/locales.gni修改 在all_chrome_locales变量中添加新的语种标识,如下图。 2. 添加编译文件,告诉浏览器在编译时需要加载和输出那些文件 尝试编译出现错误一提示。需要…...
赛氪荣幸受邀参与中国联合国采购促进会第五次会员代表大会
11 月21 日 (星期二) 下午14:00,在北京市朝阳区定福庄东街1号中国传媒大学,赛氪荣幸参与中国联合国采购促进会第五次会员代表大会。 2022年以来,联合国采购杯全国大学生英语大赛已经走上了国际舞台,共有来自…...
车载通信架构 —— 传统车内通信网络发展回顾
车载通信架构 —— 传统车内通信网络发展回顾 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何…...
`maven.test.skip` 和 `skipTests` 的区别
maven.test.skip 和 skipTests 的区别 -DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。 -Dmaven.test.skiptrue,不执行测试用例,也不编译测试用例类。...
linux输出的重定无效问题和解决
我们在调试程序或者打印日志时经常会遇到重定向的问题,而有时候会遇到重定向无效的问题,下面给一个简单的例子,首先写一个简单的test.c #include <stdio.h>int main(){fprintf(stdout, "hello\n");fprintf(stderr, "world\n");return 0; }编译生…...
开发上门按摩系统对技师如何管理,薪资结构怎么设计
开发完上门按摩系统平台上线之后,对技师的管理和薪资结构是非常重要的环节,关乎着平台的服务能力和服务质量,那么应该如何去管理和设计薪资结构呢 首先说技师管理: 一、培训和认证:平台应对技师进行全面的培训…...
长期使用 taotoken 后对其官方价折扣与活动价的实际节省感受
长期使用 Taotoken 后对其官方价折扣与活动价的实际节省感受 1. 个人开发者的成本观察 作为独立开发者,我使用 Taotoken 平台接入大模型 API 已有半年时间。最初选择该平台的主要原因之一是其透明的价格体系和定期推出的优惠活动。在实际使用过程中,我…...
Calibre中文路径乱码终极解决方案:如何彻底告别拼音文件名困扰
Calibre中文路径乱码终极解决方案:如何彻底告别拼音文件名困扰 【免费下载链接】calibre-do-not-translate-my-path Switch my calibre library from ascii path to plain Unicode path. 将我的书库从拼音目录切换至非纯英文(中文)命名 项目…...
Eclipse老用户看过来:告别手动配置,用Gradle+Boot一步搞定Spring Boot项目(附完整build.gradle)
Eclipse老用户迁移指南:用GradleBoot打造高效Spring Boot工作流 如果你是从Eclipse时代走过来的Java开发者,可能还记得那些手动管理JAR包的日子——下载依赖、配置classpath、解决版本冲突,每一步都充满挑战。如今,Gradle和Spring…...
Nintendo Switch游戏安装终极指南:Awoo Installer如何让安装变得简单高效
Nintendo Switch游戏安装终极指南:Awoo Installer如何让安装变得简单高效 【免费下载链接】Awoo-Installer A No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/aw/Awoo-Installer 还在为Switch…...
别再死记硬背公式了!用Python/MATLAB仿真带你彻底搞懂惠斯通电桥与非平衡电桥
动态仿真揭秘惠斯通电桥:用Python/MATLAB可视化非平衡态奥秘 电桥电路是工程测量中的经典工具,但传统教学中复杂的公式推导往往让学习者陷入数学迷雾。当我第一次在实验室摆弄那些可调电阻时,突然意识到——与其死记硬背那些平衡条件公式&…...
别把 Web Dynpro ABAP 授权做成一锅粥,真正该分清的是 S_START、S_DEVELOP、S_WDR_DEV 和 S_WDR_ADM
很多团队一碰到 Web Dynpro ABAP 授权,第一反应就是去 PFCG 里猛塞角色,应用起不来就补 S_START,调试工具打不开就补 S_DEVELOP,个性化和定制化混在一起时又把 S_WDR_ADM 一路放大。系统能跑起来不代表授权设计是对的,真正到了生产环境,问题往往不是 没有权限 这么简单,…...
使用Taotoken聚合API为初创团队统一管理多模型调用成本
使用Taotoken聚合API为初创团队统一管理多模型调用成本 1. 初创团队的多模型管理痛点 小型技术团队在同时使用多个大语言模型时,通常会面临三个典型问题。首先是密钥分散管理带来的安全隐患,每个开发者可能单独保管不同厂商的API Key,增加了…...
BepInEx游戏插件框架:10分钟掌握Unity游戏模组开发神器
BepInEx游戏插件框架:10分钟掌握Unity游戏模组开发神器 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx游戏插件框架是Unity游戏模组开发的终极解决方案&#x…...
制造业智能质量追溯:从“事后追责“到“事前预防“的转型之路
一、引言:质量管理的范式转移过去三十年,制造业质量管理经历了一场静默的革命。90年代,工厂靠老师傅的经验和纸质记录卡管理质量。21世纪初,ERP和MES系统让数据实现了电子化。但很多企业发现,系统上了、数据有了&#…...
《文字定律》AI读后感来自-豆包(字节跳动)
作者感言在我接触的这些AI之中,豆包是我最感觉难过的一个。不知道大家是否也有这样的感受,爱抄袭,爱一本正经的说假话,爱说好听的情绪语言。在我创作完成后,翻译英文版的过程中,经常犯错,我不停…...
