Airflow新建dag用来调用jar包

这篇博客介绍了如何创建一个名为logdemo的目录,存放jar包、log和sh文件。runjar.sh脚本用于执行jar包内容,包括设置jar和日志路径,检查进程,启动和记录日志。在Airflow环境中,于dags目录创建a_runjar.py,用于调用runjar.sh。通过运行python a_runjar.py验证无误,并检查日志写入情况。1分钟后,可以在Airflow界面看到新DAG,并手动运行验证日志功能。

新建一个目录logdemo,将jar包、log、sh文件放这里

runjar.sh 是用来执行jar包 内容如下:

#!/bin/bash

# 定义变量

# 要运行的jar包路径,加不加引号都行。 注意:等号两边 不能 有空格,否则会提示command找不到

JAR_NAME=/root/logdemo/logdemo.jar

# 日志路径,加不加引号都行。 注意:等号两边 不能 有空格,否则会提示command找不到

LOG_PATh=/root/logdemo/logdemo.log



# 启动方法

        # 重新获取一下pid,因为其它操作如stop会导致pid的状态更新

        pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`

        # -z 表示如果$pid为空时执行

        if [ -z $pid ]; then

        #获取当前运行路径 日志输出到log文件

        echo "path: `pwd`"  >> $LOG_PATh

        #进入jar所在的路径

        cd /root/logdemo/

        #执行jar包并输出日志到log文件

        nohup java -jar $JAR_NAME >> $LOG_PATh 2>&1 &

        fi

在airflow目录新建一个dags目录 用于存放自己建立的dag

在dags目录中新建一个a_runjar.py 用来调用runjar.sh 内容如下

创建后输入 python a_runjar.py 来检查是否正确,没有任何报错说明正常。

等1分钟左右,刷新页面会看到自己新建的dag

手动运行看下日志是否正常写入。可以正常写入日志说明正常。

### 创建 Spark 任务 在 Apache Airflow 中配置和运行 Spark 作业涉及多个方面,括定义 DAG 文件、设置连接器以及编写 Python 或 Bash 操作符来启动 Spark 应用程序。 #### 定义 DAG 文件 DAG (Directed Acyclic Graph) 文件用于描述工作流程的任务及其依赖关系。对于 Spark 任务来说,通常会使用 `BashOperator` 来调用 spark-submit 命令提交应用程序到集群上执行;也可以通过自定义 Operator 如 `SparkSubmitOperator` 更加方便地集成 Spark 与 Airflow[^1]。 ```python from airflow import DAG from datetime import timedelta, datetime from airflow.providers.apache.spark.operators.spark_submit import SparkSubmitOperator default_args = { 'owner': 'airflow', 'depends_on_past': False, 'email_on_failure': False, 'email_on_retry': False, } with DAG( dag_id='example_spark_job', default_args=default_args, start_date=datetime(2023, 9, 1), schedule_interval=timedelta(days=1)) as dag: spark_task = SparkSubmitOperator( task_id="run_spark_app", application="/path/to/your/spark/application.py", # 替换成实际路径 conn_id='spark_default', # 如果设置了默认连接则无需指定此参数 verbose=True # 是否打印更多日志信息 ) ``` 这段代码展示了如何在一个简单的 Airflow 工作流中加入 Spark 提交操作。这里假设已经安装并配置好了相应的环境,并且能够正常访问 Spark 集群。 #### 设置 Connection 为了使 Airflow 可以成功地向远程 Spark Master 发送请求,在 Airflow Web UI 的 Admin -> Connections 页面下新增名为 "spark_default" 的 connection entry 并填写必要的字段如 Host、Port 等信息以便于后续调用时自动填充这些参数。 #### 编写 Spark Application 最后就是准备要运行的具体 Spark 应用了,这可以是一个 PySpark Script (.py),Scala JAR File (.jar) 或者其他支持的形式。确保该文件放置在可被上述 `application` 参数指向的位置即可。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值