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


    🏡 个人主页IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客

     🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。

     🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频


    目录

    1. HiveOperator配置

    2. HiveOperator调度HQL案例


    1. HiveOperator配置

    可以通过HiveOperator直接操作Hive SQL ,HiveOperator的参数如下:

    1. hql(str):需要执行的Hive SQL。
    2. hive_cli_conn_id(str):连接Hive的conn_id,在airflow webui connection中配置的。

    想要在airflow中使用HiveOperator调用Hive任务,首先需要安装以下依赖并配置Hive Metastore:

    1. #切换Python37环境
    2. [root@node4 ~]# conda activate python37
    3. #安装hive provider package
    4. (python37) [root@node4 ~]# pip install apache-airflow-providers-apache-hive==2.0.2
    5. #启动airflow
    6. (python37) [root@node4 ~]# airflow webserver --port 8080
    7. (python37) [root@node4 ~]# airflow scheduler

    登录Airflow webui并设置Hive Metastore,登录后找到”Admin”->”Connections”,点击“+”新增配置:

    2. HiveOperator调度HQL案例

    1) 启动Hive,准备表

    启动HDFS、Hive Metastore,在Hive中创建以下三张表:

    1. create table person_info(id int,name string,age int) row format delimited fields terminated by '\t';
    2. create table score_info(id int,name string,score int) row format delimited fields terminated by '\t';

    向表 person_info加载如下数据:

    1. 1 zs 18
    2. 2 ls 19
    3. 3 ww 20

    向表score_info加载如下数据:

    1. 1 zs 100
    2. 2 ls 200
    3. 3 ww 300

    2) 在node4节点配置Hive 客户端

    由于Airflow 使用HiveOperator时需要在Airflow安装节点上有Hive客户端,所以需要在node4节点上配置Hive客户端。

    将Hive安装包上传至node4 “/software”下解压,并配置Hive环境变量

    1. #在/etc/profile文件最后配置Hive环境变量
    2. export HIVE_HOME=/software/hive-1.2.1
    3. export PATH=$PATH:$HIVE_HOME/bin
    4. #使环境变量生效
    5. source /etc/profile

    修改HIVE_HOME/conf/hive-site.xml ,写入如下内容:

    1. <configuration>
    2.  <property>
    3.   <name>hive.metastore.warehouse.dirname>
    4.   <value>/user/hive/warehousevalue>
    5.  property>
    6.  <property>
    7.   <name>hive.metastore.localname>
    8.   <value>falsevalue>
    9.  property>
    10.  <property>
    11.   <name>hive.metastore.urisname>
    12.   <value>thrift://node1:9083value>
    13.  property>
    14. configuration>

    3) 编写DAG python配置文件

    注意在本地开发工具编写python配置时,需要用到HiveOperator,需要在本地对应的python环境中安装对应的provider package。

    1. C:\Users\wubai>d:
    2. D:\>cd d:\ProgramData\Anaconda3\envs\python37\Scripts
    3. d:\ProgramData\Anaconda3\envs\python37\Scripts>pip install apache-airflow-providers-apache-hive==2.0.2
    4. 注意:这里本地安装也有可能缺少对应的C++环境,我们也可以不安装,直接跳过也可以。

    Python配置文件:

    1. from datetime import datetime, timedelta
    2. from airflow import DAG
    3. from airflow.providers.apache.hive.operators.hive import HiveOperator
    4. default_args = {
    5.     'owner':'wangwu',
    6.     'start_date':datetime(2021, 9, 23),
    7.     'retries': 1,  # 失败重试次数
    8.     'retry_delay': timedelta(minutes=5) # 失败重试间隔
    9. }
    10. dag = DAG(
    11.     dag_id = 'execute_hive_sql',
    12.     default_args=default_args,
    13.     schedule_interval=timedelta(minutes=1)
    14. )
    15. first=HiveOperator(
    16.     task_id='person_info',
    17.     hive_cli_conn_id="node1-hive-metastore",
    18.     hql='select id,name,age from person_info',
    19.     dag = dag
    20. )
    21. second=HiveOperator(
    22.     task_id='score_info',
    23.     hive_cli_conn_id="node1-hive-metastore",
    24.     hql='select id,name,score from score_info',
    25.     dag=dag
    26. )
    27. third=HiveOperator(
    28.     task_id='join_info',
    29.     hive_cli_conn_id="node1-hive-metastore",
    30.     hql='select a.id,a.name,a.age,b.score from person_info a join score_info b on a.id = b.id',
    31.     dag=dag
    32. )
    33. first >> second >>third

    4) 调度python配置脚本

    将以上配置好的python文件上传至node4节点$AIRFLOW_HOME/dags下,重启Airflow websever与scheduler,登录webui,开启调度:

    调度结果如下:


  • 相关阅读:
    Redis的分布式锁问题(十)最强分布式锁工具:Redisson
    SpringBoot 中到底如何解决跨域问题?
    java计算机毕业设计springboot+vue基本微信的大学生竞赛报名小程序
    Java 8 + 10 = Java 18
    vue样式穿透的几种方式
    Ajax与Axios的区别
    MySQL——进阶
    【一起学Rust】Rust的Hello Rust详细解析
    Appium自动化测试基础 — 移动端测试环境搭建(一)
    C++基础从0到1入门编程(三)
  • 原文地址:https://blog.csdn.net/qq_32020645/article/details/134503841