一百三十、海豚调度器——用DolphinScheduler定时调度HiveSQL任务

news2024/11/27 2:43:22

一、目标

用海豚调度器对Hive数仓各层数据库的SQL任务进行定时调度。比如,DWD层脱敏清洗表的动态插入数据、DWS层指标表的动态插入数据

二、工具版本

1、海豚调度器:apache-dolphinscheduler-2.0.5-bin.tar.gz

2、Hive:apache-hive-3.1.2-bin.tar.gz

三、实施步骤

(一)在海豚调度器的数据源中心模块创建Hive各数据库的数据源

第一步,点击海豚调度器的数据源中心模块

第二步,点击创建数据源

第三步,编辑数据源,包括数据源类型、数据源名称、IP主机名、端口、用户名、数据库名

第四步,点击测试连接

第五步,连接测试弹出成功提示后,点击编辑

(二)在海豚调度器的项目管理模块创建项目

第一步,点击海豚调度器的项目管理模块

第二步,点击创建项目

第三步,编辑项目名称和所属用户

第四步,项目名称和所属用户编辑好后点击编辑

(三)点击创建好的项目,在工作流定义模块中创建工作流

第一步,点击创建好的项目

 第二步,在项目中的工作流定义模块中,点击创建工作流

 第三步,在工作流中,拖拽需要的SHELL控件,然后在SHELL节点编辑HiveSQL脚本

 1、由于是通过HiveSQL编辑的脚本去定时调度,因此这里选择拖拽SHELL控件

2、在SHELL节点,修改节点名称以及描述

3、最重要的是,在SHELL节点编辑HiveSQL脚本。脚本内容如下:

#! /bin/bash
source /etc/profile

hive -e "
use hurys_dc_dws;

set hive.vectorized.execution.enabled=false;
set hive.auto.convert.join=false;
set mapreduce.map.memory.mb=10150;
set mapreduce.map.java.opts=-Xmx6144m;
set mapreduce.reduce.memory.mb=10150;
set mapreduce.reduce.java.opts=-Xmx8120m;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.dynamic.partition=true;
set hive.exec.parallel=true;
set hive.support.concurrency=false;
set mapreduce.map.memory.mb=4128;
set hive.vectorized.execution.enabled=false;

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.max.dynamic.partitions.pernode=1000;
set hive.exec.max.dynamic.partitions=1500;

insert  overwrite  table  dws_queue_dynamic_statistics_30min  partition(day)
select
      t1.device_no,
      t1.create_time,
       case when  minute(create_time ) >= 30 then
        concat(substr(create_time, 1, 14), '30:00') else
        concat(substr(create_time, 1, 14), '00:00')end as start_time,
        t1.lane_no,
        t2.name,
        t3.direction,
        t1.queue_count,
        t1.queue_len,
        t1.day
from hurys_dc_dwd.dwd_queue_dynamic as t1
  right join hurys_dc_dws.dws_device_name as t2
                        on t2.device_no = t1.device_no
  right join hurys_dc_dws.dws_device_direction as t3
                        on t3.device_no = t1.device_no
where t1.create_time is not null
group by t1.device_no, t1.create_time,t1.lane_no, t2.name, t3.direction, t1.queue_count, t1.queue_len, t1.day
"

注意:最后一条SQL不需要加分号;

4、除了节点名称、描述、脚本需要编辑外,其他默认即可。最后点击确认添加

第四步,在SHELL节点确认添加后点击保存、然后设置DAG图名称

1、在SHELL节点编辑完确认添加后点击页面右上方的保存

2、在设置DAG图名称窗口,设置DAG图的名称和描述,选择租户

3、设置名称完后点击添加

(四)工作流创建好后,先上线工作流,再点击运行工作流

 (五)工作流运行后,在工作流实例和任务实例可以查看工作流执行结果

 (六)工作流运行结束后,在Hive中验证一下数据是否成功动态插入

 从新建的空白表到工作流运行后查询表中有数据,说明海豚调度HiveSQL任务成功!!!

(七)如果要设置定时执行的话,就在工作流建好后设置定时

 第一步,在工作流设置定时

 第二步,设置定时参数,设置好后点击创建

 第三步,创建好定时后点击工作流的定时管理

第四步,点击定时管理中的定时上线

 第五步,这样定时任务就设置好了,可以看到工作流的定时任务已经上线

到这里,用海豚调度器定时调度HiveSQL脚本任务的演示就结束了!

(八)最后总结一下,有两点需要注意

第一点:海豚对于HiveSQL的SQL调度能力似乎不是特别好,尤其是对一些复杂SQL的调度。因此海豚调度的是HiveSQL的脚本任务,而不是直接调度HiveSQL

第二点:SHELL节点脚本中最后一条SQL不要加分号;

乐于奉献共享,帮助你我他!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/764418.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

随手笔记——Sophus的基本使用方法

随手笔记——Sophus的基本使用方法 说明CMakeLists.txt补充:关于 ADD_SUBDIRECTORY 的使用使用CMakeLists执行顺序 源代码 说明 Sophus 库支持SO(3) 和SE(3),此外还含有二维运动 SO(2),SE(2) 以及相似变换 Sim(3) 的内容。它是直接在 Eigen …

数据结构--图的存储邻接矩阵法

数据结构–图的存储邻接矩阵法 无向图: 有向图: #define MaxVerTexNum 100 //顶点数目的最大值 typedef struct {char vex[MaxVerTexNum]; //顶点表int Edge[MaxVerTexNum][MaxVerTexNum]; //邻接矩阵,边表int vexnum, arcnum; //图的当前顶…

最新 robot framework安装

相信大家对robot framework并不陌生,它是一个基于Python语言,用于验收测试和验收测试驱动开发(ATDD)的通用测试自动化框架,提供了一套特定的语法,并且有非常丰富的测试库。 ### [Python](https://www.pytho…

gogs的自定义配置

在 GOGS 下载并安装后,在程序目录下建立一个custom/conf/app.ini的配置文件,内容如下: APP_NAME Gogs # APP名字 RUN_USER git # 启动用户,设置后只能以此账号启动gogs RUN_MODE prod[database] DB_TYPE mysql HOST 1…

联通 Flink 实时计算平台化运维实践

摘要:本文整理自联通数科实时计算团队负责人、Apache StreamPark Committer 穆纯进在 Flink Forward Asia 2022 平台建设专场的分享,本篇内容主要分为四个部分: 实时计算平台背景介绍 Flink 实时作业运维挑战 基于 StreamPark 一体化管理 …

智能安全配电装置在老旧建筑防火中的应用 安科瑞 许敏

【摘要】现代社会的发展离不开电能,随着电能应用的广泛性,对用电安全有了更高的要求。近些年来,用电安全形式严峻,尤其是一些老旧建筑中因用电而引起的火灾事故频发,造成一系列严重的损失,严重影响着民众的…

rancher部署

Rancher 管理 Kubernetes 集群 //Rancher 简介 Rancher 是一个开源的企业级多集群 Kubernetes 管理平台,实现了 Kubernetes 集群在混合云本地数据中心的集中部署与管理, 以确保集群的安全性,加速企业数字化转型。超过 40000 家企业每天使用 …

工控机设备安全

工控设备安全现状 工业控制系统是支撑国民经济的重要设施,是工业领域的神经中枢。现在工业控制系统已经广泛应用于电力、通信、化工、交通、航天等工业领域,支撑起国计民生的关键基础设施。 随着传统的工业转型,数字化、网络化和智能化的工…

C++11(3)——lambda表达式

目录 1 C98中的一个例子 2 lambda表达式 3 lambda表达式语法 4 函数对象与lambda表达式 1 C98中的一个例子 在C98中,如果想要对一个数据集合中的元素进行排序,可以使用std::sort方法。 如果待排序元素为自定义类型,需要用户定义排序时的…

vue新增删除内容排序问题解决处理

本次答题选项的删除添加是个人最初比较头疼的地方。比如ABCD四个选项,删除c选项后,点击【新增答题类型】选项按钮,则默认创建是E选项。再或者就是ABCD四个选项位置删除任意一个后,顺序被打乱等,最后解决了,…

每日刷一题——二维数组中的查找

二维数组中的查找 原题链接:JZ4 二维数组中的查找 问题描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入…

fury,protostuff 等协议性能测试对比

简单介绍: 序列化框架是系统通信的基础组件,在大数据、AI 框架和云原生等分布式系统中广泛使用。当对象需要跨进程、跨语言、跨节点传输、持久化、状态读写、复制时,都需要进行序列化,其性能和易用性影响运行效率和开发效率。 Fury 是一个基于…

管理本地用户和组

管理本地用户和组 描述用户和组 用户 用户账户用于运行命令的不同人员与程序之间提供安全界限。 使用id显示有关当前登录用户信息 [rootservera ~]# id uid0(root) gid0(root) groups0(root) contextunconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023查找其他用户基本…

[STM32教程]01如何开始准备hal库的开发环境

文章目录 概述1、认识硬件环境1.1 ARM简介1.2 STM32简介 2. 软件开发环境准备2.1 Keil MDK安装2.2 安装STM32Cube MX2.3 安装STM32 HAL库2.4 St-Link V2使用 总结 概述 本文介绍如何准备stm32f103的hal库工程开发环境,包括cubemx安装、keil mdk安装、stm32 hal库安…

小程序引入阿里云矢量图库图标

简介 阿里云矢量图库(Aliyun Vector Icon Library)是阿里云提供的一个图标库,为开发者和设计师提供了丰富的矢量图标资源,用于在网页、移动应用和其他设计项目中使用。 使用阿里云矢量图库,你可以快速搜索、选择和下…

如何设置反馈点

如何设置反馈点 前面的POWER DC仿真都是忽略反馈线进行的仿真,如果单板压降不过,电源会自动调整输出电压,来满足负载的得到额定的电压. 仿真上也可以自己添加反馈点,以得到抬高后的电源输出电压值 具体操作如下 同样以下图的CPU的Core电源为例 按照流程正常设置好参数

携程ANR 优化实践 - Binder开辟线程数过多导致主线程ANR异常

了解携程ANR前,我们一起了解 binder 线程池的前生今世 在android系统中,通过binder进行IPC时,服务端总是会起一些Binder线程来响应客户端的请求。这里面就涉及到通过BInder线程池 开辟binder线程 那这些Binder线程又是如何创建,如…

已解决YOLOv5训练报错:RuntimeError: Expected all tensors to be on the same device......

这是发生在集成一个yolov5中没有的检测头head的情况下发生的错误,出现的时候是已经训练起来了,在训练结束时发生的报错,下面是我的解决办法。 1、问题出现及分析排查 改yolov5的网络进行训练时出的报错: RuntimeError: Expected all tenso…

步进电机控制

步进电机控制 #include "./stepper/bsp_stepper_init.h" #include "./delay/core_delay.h" #include "stm32f4xx.h"void TIM_SetTIMxCompare(TIM_TypeDef *TIMx,uint32_t channel,uint32_t compare); void TIM_SetPWM_period(TIM_TypeDef* TI…

Python爬虫学习笔记(五)————JsonPath解析

目录 1.JSONPath —— xpath在json的应用 2.JSONPath 表达式 3.jsonpath的安装及使用方式 4.jsonpath的使用 5.JSONPath语法元素和对应XPath元素的对比 6.实例 (1)商店案例 (2) 解析淘票票的“城市选择”数据 1.JSONPath…