
https://github.com/apache/
点击蓝字
关注我们
转载自 | 数仓生态圈
SeaTunnel可以从HTTP中获取数据,一般来说,HTTP会返回一个JSON格式的字符串,SeaTunnel解析JSON后分解出来数据类型,然后输出到目标系统中。
常规来说是没有问题,但是如果这个HTTP请求的数据量过大,对于服务端和客户端的压力就非常大,那么如何解决这个问题呢?那就需要使用流式处理方式JSONL,边生成数据边发送,这样就不需要一次性把数据都放入内存,减少内存的使用量。例如从数据库里面获取1个月的订单,如果总共100万条数据,那么我们可以一次只取5天的数,循环获取和输出,那么就不需要一次性的把100万条数据放入内存中。
一、JSON与JSONL的输出格式
1、JSON
通过HTTP返回JSON样式的数据如下
[ { "id": 1, "name": "a" }, { "id": 2, "name": "b" }]返回的内容整体是一个JSON格式,数据处理会把返回的整个数据进行处理
2、JSONL
通过HTTP返回JSONL样式的数据如下
{"id":1,"name":"a"}{"id":2,"name":"b"}返回的内容整体不是一个JSON格式,而是每行一个JSON类型,并且通过换行来分割其他JSON。
二、区分返回格式的参数
参数 | 值 | 描述 |
enable_multi_lines | true | 读取JSONL格式 |
enable_multi_lines(默认值) | false | 读取JSON格式 |
三、举例
1、先做一个HTTP测试服务,返回上面2种格式
[root@localhost]# curl http://localhost:3000[ { "id": 1, "name": "aaa" }, { "id": 2, "name": "bbb" }][root@localhost]# curl http://localhost:3000/jsonl{"id":1,"name":"aaa"}{"id":2,"name":"bbb"}2、JSON格式的配置
env { parallelism = 1 job.mode = "BATCH"}source { Http { plugin_output = "http" url = "http://localhost:3000" method = "GET" format = "json" enable_multi_lines = false schema = { fields { id = int name = string } } }}sink { Console { parallelism = 1 }}输出结果
2026-07-04 18:13:09,073 INFO [.a.s.c.s.c.s.ConsoleSinkWriter] [st-multi-table-sink-writer-1] - subtaskIndex=0 rowIndex=1: SeaTunnelRow#tableId=Optional[http] SeaTunnelRow#kind=INSERT : 1, aaa2026-07-04 18:13:09,073 INFO [.a.s.c.s.c.s.ConsoleSinkWriter] [st-multi-table-sink-writer-1] - subtaskIndex=0 rowIndex=2: SeaTunnelRow#tableId=Optional[http] SeaTunnelRow#kind=INSERT : 2, bbb
3、JSONL格式的配置
source { Http { plugin_output = "http" url = "http://localhost:3000/jsonl" method = "GET" format = "json" enable_multi_lines = true schema = { fields { id = int name = string } } }}返回结果和上面相同,如果把enable_multi_lines改为false,那么结果只会有第一条数据,后面的数据没有获取到。
四、总结
如果是常规的HTTP服务返回1个JSON格式的字符串时,那么就不用管这个参数,它默认就是false。如果是流式的JSONL输出格式,那么一定要记住设置enable_multi_lines参数为true。
Apache SeaTunnel是一个云原生的多模态、高性能海量数据集成工具。北京时间 2023 年 6 月1 日,全球最大的开源软件基金会ApacheSoftware Foundation正式宣布SeaTunnel毕业成为Apache顶级项目。目前,SeaTunnel在GitHub上Star数量已达9k+。SeaTunnel支持在云数据库、本地数据源、SaaS、大模型等170多种数据源之间进行数据实时和批量同步,支持CDC、DDL变更、整库同步等功能,更是可以和大模型打通,让大模型链接企业内部的数据。
同步Demo
新手入门

最佳实践

测试报告

源码解析



