一、IDEA打包SparkETL模块,上传值HDFS的/tqdt/job目录
二、创建ods_ETL.sh脚本
mkdir -p /var/tq/sh/dwd
vim /var/tq/sh/dwd/ods_ETL.sh
chmod 754 /var/tq/sh/dwd/ods——ETL.sh
#脚本内容如下
#!/bin/bash
cur_date=$(date +%Y-%m-%d)
/opt/bigdata/spark-3.3.2/bin/spark-submit \
--master yarn \ #yarn提交模式
--deploy-mode cluster \ # appcationmaster与driver同节点
--queue default \
--driver-memory 1G \ # driver内存
--driver-cores 1 \ # driver核数
--executor-memory 1G \ # executor内存
--executor-cores 1 \ # executor核数
--num-executors 2 \ # executor数量
--conf spark.sql.shuffle.partitions=4 \ # 分区数,对最终文件数有决定作用
--name "ODS层数据ETL" \
--class com.gdp.etl.job.Job01 \ #运行主类
hdfs://hdfs-tqdt/tqdt/jobs/sparkETL.jar # jar包存放路径
if [ $? -eq 0 ]
then
echo "任务名称:ODS层源数据ETL,处理日期:${cur_date},结果状态:成功!"
exit 0
else
echo "任务名称:ODS层源数据ETL,处理日期:${cur_date},结果状态:失败!"
exit 1
fi
三、测试脚本
#运行脚本
sh /var/tq/sh/dwd/ods_ETL.sh
问题:
打包后运行主类找不到
java.lang.ClassNotFoundException: com.gdp.etl.job.Job01
不知道是否是打包工具问题,手动将编译后的文件添加至相应目录下,问题得到解决。