当前位置: 首页 > news >正文

dolphinscheduler实现(oracle-hdfs-doris)数据ETL

dolphinscheduler执行

    • 完整脚本(自行替换相关变量)
    • 配置文件conf
    • 配置文件解析脚本
    • 转base64脚本

完整脚本(自行替换相关变量)

user_ol=`sh conf/getInfo.sh 'Oracle' 'user' conf/databases.conf`
password_ol=`sh conf/getInfo.sh 'Oracle' 'password' conf/databases.conf`
dblink_ol=`sh conf/getInfo.sh 'Oracle' 'dblink' conf/databases.conf`
current_date=$(date +"%Y%m%d%H%M%S")
table_name=""
hdfs_path="/user/yarn/"${table_name}${current_date}echo "参数成功"${current_date}
#where $CONDITIONS 必须有
sql='
where $CONDITIONS
'
echo "开始执行sqoop"sqoop import -Dorg.apache.sqoop.splitter.allow_text_splitter=true \
--connect ${dblink_ol} \
--username ${user_ol} \
--password ${password_ol} \
--query "${sql}" \
--target-dir ${hdfs_path} \
--delete-target-dir \
--split-by card_no \
-m 2if [ $? -ne 0 ]; thenecho "导出到hdfs失败----------------------"exit -1 
fiecho "开始导入到doris"
#broker_name
user=`sh conf/getInfo.sh 'Doris-Pro' 'user' conf/databases.conf`
password=`sh conf/getInfo.sh 'Doris-Pro' 'password' conf/databases.conf`
dblink=`sh conf/getInfo.sh 'Doris-Pro' 'dblink' conf/databases.conf`
target_table_name="ods_cme_"${table_name}
echo "加载路径:"${hdfs_path}
lable_name=${target_table_name}"_"${current_date}#nameservice1 分布式hdfs集群名称,单机选IP形式
sql="
LOAD LABEL ${lable_name}
(DATA INFILE('hdfs://nameservice1${hdfs_path}/part*')INTO TABLE ${target_table_name}COLUMNS TERMINATED BY ','            
) 
with BROKER worker3
PROPERTIES
('timeout'='1200','max_filter_ratio'='0.1'
)
"
mysql -h fe_ip -P9030 -u${user} -p${password} -D offline -e "truncate table ${target_table_name}"
echo "清空表成功"
mysql -h fe_id -P9030 -u${user} -p${password} -D offline -e "${sql}"if [ $? -ne 0 ]; thenecho "创建broker任务失败--------------------"exit -1  # 可以选择退出脚本或执行其他操作
fi# broker 任务检查
sh conf/broker_state.sh ${label} ${user} ${password}if [ $? -ne 0 ]; thenecho "任务失败--------------------"exit -1  # 可以选择退出脚本或执行其他操作
fi

配置文件conf

# 文本输出为base64的形式
[Doris]
user_name=_=用户名
password=_=密码
dblink=_=jdbcurl

配置文件解析脚本

#!/bin/bash
param=`awk -F '=_=' '/\['"$1"'\]/{a=1}a==1&&$1~/'"$2"'/{gsub(/[[:blank:]]*/,"",$2);printf("%s\t",$2);exit;}' $3`
echo $(echo -n ${param} | base64 --decode)

转base64脚本

#!/bin/bash
# 要编码的文本
text=$1
# 编码文本
encoded_text=$(echo -n "${text}" | base64 -w 0)
# 输出编码结果
echo "编码结果:${encoded_text}"
# 输出编码欠的结果
echo "解码结果:"$(echo -n ${encoded_text} | base64 --decode)

相关文章:

  • 多态以及多态底层的实现原理
  • 【Dart语言】八、并发
  • 《C++ 模板:泛型编程的核心》
  • 【无人机】使用扩展卡尔曼滤波 (EKF) 算法来处理传感器测量,各传感器的参数设置,高度数据融合、不同传感器融合模式
  • 第十五届蓝桥杯 2024 C/C++组 下一次相遇
  • 逻辑回归:损失和正则化技术的深入研究
  • Git分支管理方案
  • 【Git】Git Revert 命令详解
  • 【springsecurity oauth2授权中心】jwt令牌更换成自省令牌 OpaqueToken P4
  • 前端频繁调用后端接口问题思考
  • 转型探讨:未来投资与布局
  • qt.tlsbackend.ossl: Failed to load libssl/libcrypto.
  • 【springsecurity oauth2授权中心】将硬编码的参数提出来放到 application.yml 里 P3
  • OpenCV --- 图像预处理(六)
  • 25、简述.NET程序集(Assembly)
  • JavaFX实战:从零打造一个功能丰富的“猜数字”游戏
  • ASP.Net Web Api如何更改URL
  • 解码思维链:AI思维链如何重塑人类与机器的对话逻辑
  • “思考更长时间”而非“模型更大”是提升模型在复杂软件工程任务中表现的有效途径 | 学术研究系列
  • 简化K8S部署流程:通过Apisix实现蓝绿发布策略详解(上)
  • 魔都眼丨人形机器人“华山论剑”:拳击赛缺席,足球赛抢镜
  • 牧原股份一季度归母净利润44.91亿元,同比扭亏为盈
  • 建设高标准农田主要目标是什么?有哪些安排?两部门有关负责人答问
  • 173.9亿人次!一季度我国交通出行火热
  • 商标乱象调查:“120W”充电器功率仅12W,120W为商标名
  • 全红婵、李宁亮相中国航天日论坛,体育和航天这一次紧密相连