十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

SeaTunnel 首个任务实战:基于 FakeSource 与 Console 的本地全链路验证指南

SeaTunnel 首个任务实战:基于 FakeSource 与 Console 的本地全链路验证指南 SeaTunnel 首个任务实战基于 FakeSource 与 Console 的本地全链路验证指南【免费下载链接】seatunnelSeaTunnel is a multimodal, high-performance, distributed, massive data integration tool.项目地址: https://gitcode.com/GitHub_Trending/se/seatunnel本篇指南带你走完 Apache SeaTunnel 的最短成功路径全程在本机完成不依赖 MySQL、Kafka 或任何对象存储用内置的FakeSource生成数据、FieldMapper做字段重命名、Console输出到终端一次性验证安装、配置解析与执行引擎三个关键环节是否正常工作。读完本文你将掌握插件裁剪安装、HOCON 任务配置编写、-m local本地模式提交以及结果判定的完整方法可以放心进入真实管道开发。Step 1完成本地部署运行本文示例的前提是已经完成 SeaTunnel 的本地部署并确认 SeaTunnel 安装目录下文统一称${SEATUNNEL_HOME}下存在可执行的bin/seatunnel.sh。完整的部署流程请参见 本地部署文档其要点如下环境依赖安装 Java 8 或 11高于 Java 8 的版本理论上也可用并配置好JAVA_HOME获取发行包从官方下载页获取seatunnel-version-bin.tar.gz二进制包并解压Windows 使用对应的.zip包确认脚本就绪解压后目录内应包含bin/seatunnel.sh、bin/seatunnel.cmd、config/、connectors/等目录。在仓库中bin/目录实际提供了两个安装脚本install-plugin.sh 与install-plugin.cmd发行版中的seatunnel.sh会在构建分发时一并产出源码侧对应的提交入口可参见 SeaTunnelClient.java。Step 2只安装示例所需的插件从 2.2.0-beta 版本起官方二进制包默认不再附带连接器依赖首次使用前必须执行插件安装命令。而生产环境通常也不需要全部插件因此推荐的做法是先在config/plugin_config中声明本次任务真正需要的插件再执行安装。精简 plugin_config按 部署文档 Download The Connector Plugins 的说明将 config/plugin_config 精简为仅保留connector-fake与connector-console两项--seatunnel-connectors-- connector-fake connector-console --end--关于plugin_config需要说明两点均可在仓库中直接核对仓库中真实的 config/plugin_config 使用--connectors-v2--作为段标记并包含了全部已注册连接器的 artifactId如connector-jdbc、connector-kafka、connector-cdc-mysql等文件头部注释明确写道不要修改分隔符--只需挑选你需要的插件完整的插件清单与 artifactId 映射还可通过发行包内的connectors/plugins-mapping.properties以及仓库根目录的 plugin-mapping.properties查看脚本安装时正是以config/plugin_config中列出的行为准逐个下载。执行安装并核对结果cd ${SEATUNNEL_HOME} sh bin/install-plugin.sh ls connectors | rg connector-(fake|console)仓库中的 bin/install-plugin.sh 展示了这套脚本的实际行为了解它有助于排查安装问题默认插件版本固定为3.0.0也支持通过第一个参数指定版本sh bin/install-plugin.sh 3.0.0默认走 HTTPS 直连下载需要curl、mktemp以及sha512sum/sha1sum/shasum/openssl之一做校验和验证下载后还会校验 JAR 魔数504b确保文件确实是 ZIP/JAR 格式可通过环境变量调整行为SEATUNNEL_MAVEN_REPOSITORY指定 HTTPS Maven 兼容镜像地址SEATUNNEL_PLUGIN_DOWNLOAD_METHODmaven则改用项目自带的 Maven Wrappermvnw dependency:get下载从而支持镜像、私有仓库、代理等 Mavensettings.xml能力对于SNAPSHOT、LATEST、RELEASE及版本区间等无法直接解析的动态版本脚本会自动切换为 Maven 方式下载。若脚本运行后connectors/目录下能看到connector-fake-3.0.0.jar与connector-console-3.0.0.jar则插件安装成功。Windows 用户请使用bin\install-plugin.cmd该脚本使用捆绑的 Maven Wrapper无需单独安装 Maven。Step 3编写一个最小任务配置将下面的配置保存为config/v2.batch.config.template或任意本地文件。它是标准的 SeaTunnel HOCON 配置由env、source、transform、sink四大块组成env { parallelism 1 job.mode BATCH } source { FakeSource { plugin_output fake row.num 16 schema { fields { name string age int } } } } transform { FieldMapper { plugin_input fake plugin_output fake1 field_mapper { age age name new_name } } } sink { Console { plugin_input fake1 } }对照仓库中的 config/v2.batch.config.template 可以看出本示例在此基础上做了三个关键改动将parallelism降为1去掉checkpoint.interval、引入FieldMapper变换并显式打通plugin_output/plugin_input的数据流命名便于你理解 SeaTunnel 的插件数据通道channel机制。逐块解读配置env 块parallelism 1表示整个作业以单并行度运行便于观察输出顺序job.mode BATCH声明这是批处理模式对应示例模板中默认即为 BATCH。如果你的环境模板里还带有checkpoint.interval在本示例中并非必需。source 块FakeSourceFakeSource是一个纯内存的数据生成器专门用于测试与演示不需要任何外部依赖。FakeSourceOptions.java 中定义了它的全部可选参数常用的包括参数默认值说明row.num5每个并行度生成的数据总行数示例显式设为 16split.num1每个并行度由 enumerator 切分的 split 数量split.read-interval1reader 两次 split 读取之间的间隔毫秒string.length5生成的 string 类型字段长度map.size/array.size/bytes.length5对应复杂类型的生成尺寸string.template无若配置则 string 字段从模板列表中随机选取int.min/int.max0/Integer.MAX_VALUE整型生成范围其他数值类型同理tinyint、smallint、bigint、float、double等均有min/max对rows无显式指定要输出的行列表每行含kind与fields优先级高于随机生成string.fake.mode等RANGE生成模式可选RANGE区间随机或TEMPLATE模板选取auto.increment.enabledfalse是否启用自增 ID 生成配合auto.increment.start默认 1使用row.num的每并行度语义很重要若你设置parallelism 2且row.num 16实际会生成 32 行数据因为 FakeSourceOptions.java 中明确描述其为 The total number of data generated per degree of parallelism。此外schema.fields定义了输出表的字段结构此处为name: string与age: int它最终会被解析为CatalogTable见 FakeConfig.java。transform 块FieldMapperFieldMapper负责输入输出字段的映射与重命名。field_mapper是一个源字段 - 目标字段的映射表其配置定义见 FieldMapperTransformConfig.java。示例中age age表示原样保留age字段name new_name表示将name字段重命名为new_name。通过plugin_input fake与plugin_output fake1将上游FakeSource的输出通道fake接入、并把变换后的结果输出到新通道fake1。sink 块ConsoleConsole是一个打印到终端的调试型 Sink同样无需任何外部系统通过plugin_input fake1消费变换后的数据流。Step 4以本地模式运行进入解压后的 SeaTunnel 目录使用-m local指定本地模式提交任务cd apache-seatunnel-${version} ./bin/seatunnel.sh --config ./config/v2.batch.config.template -m local命令参数的解析实现在 ClientCommandArgs.java 中-m--master别名-e/--deploy-mode的取值被限定为local与cluster两种-m local表示由客户端本地拉起引擎执行无需预先部署 SeaTunnel Engine 服务集群这也是新用户最推荐的入门方式cluster模式则要求先部署引擎服务。-e/--deploy-mode自 2.3.1 起已被标记为 deprecated建议统一使用-m/--master。除--config与-m外该参数类还提供了若干实用选项可用于后续调试-d/--dry-run在不真正运行 Sink 的前提下做校验或预览支持static仅静态校验配置、connect校验连接、sample采样预览数据三种模式--sample-limitsample模式下每个 Source 最多转发行数默认 10上限 10000-l/--list列出作业状态-j/--job-id按 JobId 查询作业状态。预期验证结果任务提交后应按以下四条标准逐项核对全部满足即说明本机基础链路健康进程正常启动无连接器加载错误说明connector-fake与connector-console两个 JAR 被正确发现并加载控制台打印output rowType行这一行由 ConsoleSinkWriter.java 在初始化时以log.info(output rowType: {}, ...)输出内容应展示经过FieldMapper映射后的字段即age与new_name这是验证 transform 生效的直接证据控制台打印来自ConsoleSinkWriter的 16 行数据每条记录形如subtaskIndex0 rowIndexN: SeaTunnelRow#tableId... SeaTunnelRow#kindINSERT : 字段值见 ConsoleSinkWriter.java这里出现 16 行正是因为parallelism 1且row.num 16批任务在写完所有行后正常退出BATCH模式下数据有界作业完成后客户端应正常结束并返回。如果你修改了parallelism或row.num请记得按并行度 × 每并行度行数的规则推算预期总行数避免误判。常见问题排查connector loading error/ 找不到插件回到 Step 2 确认connectors/下确实存在两个 JAR且config/plugin_config中插件名拼写无误注意是connector-fake/connector-console不是fake/console。下载失败或校验和不匹配检查网络能否访问 Maven 中央仓库如需走内网镜像设置SEATUNNEL_MAVEN_REPOSITORY后重新执行install-plugin.sh。未打印output rowType多半是配置解析阶段就出错可先用-d static做一次纯配置校验观察是否报 schema 或插件配置相关错误。输出行数不符核对parallelism与row.num的乘积关系以及 transform/sink 的plugin_input通道是否与上游plugin_output一致。下一步本示例成功后说明你的 SeaTunnel 本地基础路径已完全打通可以进入真实管道开发完整的本地引擎走查继续阅读 Quick Start With SeaTunnel Engine默认引擎通常是最短的成功路径若使用 Flink 或 Spark 作为执行引擎可分别参考 Quick Start With Flink 与 Quick Start With Spark首个经过验证的 Source→Sink 实战案例从 MySQL CDC to Kafka 开始其他管道形态可继续探索MySQL CDC to DorisJDBC to S3Kafka to IcebergHttp to JDBCFile to StarRocksMulti-table CDC【免费下载链接】seatunnelSeaTunnel is a multimodal, high-performance, distributed, massive data integration tool.项目地址: https://gitcode.com/GitHub_Trending/se/seatunnel创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表