一、目的
由于Hive处理好的结果数据要同步到ClickHouse中,因此需要在在海豚调度器中执行ClickHouse的ADS层的建库建表语句
二、执行步骤
(一)情形一:ClickHouse和海豚在同一服务器上
1、直接在海豚中创建执行SQL文件脚本的工作流
(1)第一步,在资源中心上传ADS层的建库建表SQL文件
(2)第二步,在项目里建工作流,添加运行SQL文件的脚本
#! /bin/bash
source /etc/profile
clickhouse-client --user default --password hurys@123 -d default --multiquery <basic_ads.sql
(3)第三步,保存并执行工作流
(二)情形二:ClickHouse和海豚不在同一服务器上
1、在ClickHouse数据源里执行建库建表SQL语句(一个任务一条SQL)
(1)第一步,在海豚中创建ClickHouse的数据源
(2)第二步,创建海豚工作流,执行建库建表SQL
注意:建库和建表分开,然后一个任务一条建表SQL
A、建库案例
create database if not exists hurys_dc_ads;
B、建表案例
--1.2 统计数据流量表——动态分区——1小时周期
create table if not exists hurys_dc_ads.ads_statistics_volume_1hour(
device_no String comment '设备编号',
name Nullable(String) comment '场景',
lane_no Nullable(int) comment '车道编号',
lane_direction Nullable(String) comment '车道流向',
section_no Nullable(Float32) comment '断面编号',
coil_no Nullable(Float32) comment '线圈编号',
direction Nullable(String) comment '雷达朝向',
sum_volume_hour Nullable(int) comment '每小时总流量',
start_time DateTime comment '开始时间',
end_time DateTime comment '结束时间',
day Date comment '日期'
)ENGINE = MergeTree
PARTITION BY (day)
PRIMARY KEY day
order by day
TTL day + toIntervalMonth(12)
SETTINGS index_granularity = 8192;
(3)第三步,保存并执行工作流
对于海豚调度器和ClickHouse在不在同一服务器上,ADS层建库建表语句会有不同的工作流配置方式。
注意,由于海豚调度器中的ClickHouse数据源,一个任务只能一条SQL语句,即一个; 因此不能把多个建表SQL放在一个任务中,否则会运行报错,因此海豚中的ClickHouse没有区分分段执行