醋醋百科网

Good Luck To You!

使用SeaTunnel从InfluxDB同步数据到Doris

1.SeaTunnel2.3.3的安装过程这里就省略了,网上有很多可以查到。

2.SeaTunnel2.3.3安装好以后需要删掉两个连接用的jar包,不然后面同步数据会报错,(connector-hudi-2.3.3.jar和
connector-datahub-2.3.3.jar).

3.需要增加的jar包:seatunnel-api-2.3.3.jar,
seatunnel-transforms-v2-2.3.3.jar,
mysql-connector-java-8.0.28.jar,jersey-client-1.19.4.jar,这四个jar包必须添加,不然无法同步数据运行同步脚本直接报错没有某个类。

4.InfluxDB2.7.6需要做的前提事项:下面这个步骤必须要做,不然查不到数据,

InfluxDBStudio-0.2.0(这个客户端工具有个好处,可以查看字段类型,方便同步文件中的字段类型的定义,其他的客户端好像没有,也有可能是我没发现)可下载这个客户端进行连接查询数据,网上找不到的可以私信我

linux安装influxDB2.7.6版本后,正常使用ip:8086 可访问 influxdb UI ,填个用户名、密码、org、buckets

坑来啦:

seatunnel2.3中集成influxdb配置用户名、密码后,执行同步任务总是报获取字段异常信息,于是乎跟踪seatunnel代码,发现内部一直401权限认证失败。于是使用Influxdb Studio数据库管理工具连接,输入ui页面相同的用户名,密码后一直报401权限认证不通过。通过查资料发现ui页面的用户名密码仅供ui页面使用,不能作为数据库本身访问的用户名密码。

使用influxdb client客户端,查询权限 influx v1 auth list结果为空

使用命令分配权限

influx v1 auth create -o orgName --read-bucket bucketId --username=username

或者:influx v1 auth create -o "组织名称" --write-bucket bucketId(桶id,不需要引号) --read-bucket bucketId(桶id,不需要引号) --username=账号 --password=密码

删除命令:influx v1 auth delete --id 'id编码'

删除命令中的id编码为influx v1 auth list命令查出来的ID,下图所示:

命令执行完成后需输入两次密码。Influxdb Studio数据库管理工具再次使用此用户名密码登录成功,seatunnel同步成功。

5.同步数据配置文件:
v1.batch.config_tmp.template:

env {

execution.parallelism = 1

job.mode = "BATCH"

checkpoint.interval = 10000

}


source {

influxdb {

url = "http://X.X.X.X:8086"

token = "写自己的token" #可有可无

org = "自己的组织名称"

bucket = "自己的桶" #可有可无

database = "自己的桶"

username = "写在第四步自己新建的influxdb账号"

password = "写在第四步自己新建的influxdb密码"

epoch = "H" #这个有好几级,可以去官网查看

query_timeout_sec = 600

measurement = "prometheus_remote_write" #数据表

fields = ["node_cpu_seconds_total", "
node_memory_MemTotal_bytes"] #可有可无,配置自己的字段

sql = """SELECT node_cpu_seconds_total as system_cpu_usage,cpu as process_occupy_physical_memory_size,job as create_dept,node_memory_MemTotal_bytes as process_read_written_file_system_total_bytes,node_memory_MemAvailable_bytes as process_open_file_describe_quantity,time as create_time FROM "prometheus_remote_write" where time > now() - 1h"""

where = " where time > now() - 1h"

#经过本人测试。上面的sql查询的字段必须经过重命名,或者doris建表的字段必须和influxdb2的字段完全一致,不然transform 中进行转换的时候就会成为空值,这个我还没研究明白为什么,研究明白了在补上说明,doris的表字段类型也必须和influxdb2中查询的字段类型一致,不然数据存不到doris中。schema 重定义的事influxdb2查到的字段和类型

schema {

fields {

#node_cpu_seconds_total = FLOAT

system_cpu_usage = FLOAT

process_occupy_physical_memory_size = INT

create_dept = STRING

process_read_written_file_system_total_bytes = FLOAT

process_open_file_describe_quantity = FLOAT

create_time = BIGINT

}

}


}

}


sink {

Doris {

fenodes = "X.X.X.X:8030"

username = "账号"

password = "密码"

table.identifier = "sbyw_data_acquisition.sbyw_application_process_type_tmp"

sink.label-prefix = "test-cdc"

sink.enable-2pc = "true"

sink.enable-delete = "true"

sink.max-retries = 3

batch_size = 10000

result_table_name = "sbyw_application_process_type_tmp"

doris.config {

format = "json"

read_json_by_line = "true"

}

}

}



transform {

FieldMapper {

source_table_name = "prometheus_remote_write"

result_table_name = "sbyw_application_process_type_tmp"

field_mapper = {

#node_cpu_seconds_total = system_cpu_usage

system_cpu_usage = system_cpu_usage

process_occupy_physical_memory_size = process_occupy_physical_memory_size

process_read_written_file_system_total_bytes = process_read_written_file_system_total_bytes

process_open_file_describe_quantity = process_open_file_describe_quantity

create_time = create_time

create_dept = create_dept

}

}

}

写好同步数据脚本文件运行同步命令:./bin/seatunnel.sh -c
./config/v1.batch.config_tmp.template

下面是我doris的测试表

下面是InfluxDBStudio-0.2.0客户端查到的influxdb2.7.6的数据,

influxdb2.7.6有个坑点,它支持sql查询,但不完全支持,它只支持常规的简单查询,例如下图中的查询就可以查询,但是如下图所示,可能会有人说我后面没加group by,经过测试是不行的,即使加上group by也是无法执行,那是因为官方压根不支持的这种查询。

但是下图这样是可以的:是不是很操蛋,influxdb2官方就是这样设计的,聚合查询无法和单字段进行同步查询,就是觉得这是哪个混蛋设计师设计想法,真的很操蛋。

最后这个是运行结果

同步到doris的数据

最后再吐槽一下SeaTunnel官方,文档太简单了,搞好一个真的要吐血。

说明一下:目前本人也有一些地方没搞明白,有需要的或者不明白的小伙伴可以交流学习。

这个地方我确实没理解,也没搞明白,sql中的where不能去掉,有可能查询不到数据,也有可能包错:列索引查询异常的错误,where的配置也不能去掉,否则也有可能会查询不到数据或者出现异常:列索引查询异常的错误,我就很奇怪,目前也还在研究,有知道的小伙伴麻烦评论告知一下,谢谢。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言