news 2026/8/22 12:53:52

不写一行代码如何构建ETL数据管道:Metorikku轻量级ETL框架完全入门指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
不写一行代码如何构建ETL数据管道:Metorikku轻量级ETL框架完全入门指南

不写一行代码如何构建ETL数据管道:Metorikku轻量级ETL框架完全入门指南

【免费下载链接】metorikkuA simplified, lightweight ETL Framework based on Apache Spark项目地址: https://gitcode.com/gh_mirrors/me/metorikku

Metorikku 是一个基于 Apache Spark 的轻量级 ETL 框架,它让你只用 YAML 配置文件和标准 SQL 语句,就能不写一行代码完成数据抽取、转换与加载。无需搭建复杂工具链,无需编写 Java 或 Scala,任何会写 SQL 的数据人都能快速构建可运行、可测试的 ETL 数据管道。

为什么需要 Metorikku 这个 ETL 框架?

传统上,构建 ETL 数据管道意味着三件事:学一门编程语言、理解 Spark API、维护大量模板代码。对于大多数团队来说,这太重了。

Metorikku 的思路很直接:把 ETL 逻辑从代码中解放出来,交给配置文件和 SQL。它带来三个核心优势:

  • 零代码门槛:整个数据管道由两个 YAML 文件定义,转换逻辑全部用 SQL 表达
  • 🎯轻量易部署:官方提供内置 Spark 的独立 JAR 包,一条命令即可本地运行;也可提交到任意 Spark 集群
  • 自带测试能力:内置 Metorikku Tester,用"模拟数据 + 期望结果"的方式为管道写单元测试,让 ETL 部署可自动化

项目定位为:A simplified, lightweight ETL Framework based on Apache Spark —— 简化、轻量,专注把 ETL 这件事做简单。

快速上手:两个文件构建你的第一条 ETL 管道

Metorikku 的运行只需要定义两个文件,这也是它"不写代码"理念的核心:

文件类型作用示例文件
Job 文件定义输入数据源、输出目的地、关联哪些 Metricexamples/movies.yaml
Metric 文件定义 ETL 的转换步骤(SQL)和最终输出格式examples/movies_metric.yaml

想完整查看所有支持的配置项,可以直接阅读项目提供的样例配置:

  • 完整 Job 配置样例:config/job_config_sample.yaml
  • 完整 Metric 配置样例:config/metric_config_sample.yaml

第一步:用 Job 文件声明"数据从哪来、到哪去"

Job 文件负责三件事:指定要执行的 Metric 文件、注册输入数据源、配置输出目录。以官方的电影评分示例为例,examples/movies.yaml把 CSV 文件注册成逻辑表,SQL 里就能直接像查数据库一样使用它们——这就是"不写代码"的关键体验。

它还支持日期范围批量读取(按yyyy/MM/dd目录结构滚动加载每日数据)、自定义变量(在 SQL 中引用)、日志级别、输出预览行数等实用选项,全部是声明式配置。

第二步:用 Metric 文件把 ETL 步骤写成 SQL

Metric 文件是管道的"大脑",由steps(步骤)和output(输出)两部分组成。每个步骤就是一段 SQL 查询,产出下一个步骤可以引用的中间表。官方示例examples/movies_metric.yaml展示了完整流程:

  1. 关联电影表与评分表
  2. 筛选奇幻类电影
  3. 计算平均评分并排出 Top 100
  4. 用变量过滤出指定电影

最后同一个结果集可以一次输出为 Parquet、CSV、JSON 甚至 XML 多种格式——这在传统代码方案里通常需要写好几遍写出逻辑。

除了内联 SQL,Metorikku 还支持把 SQL 放在独立文件里(如examples/topFantasyMovies.sql),让数据工程师和平台工程师各守边界、互不干扰。

三种运行方式:从本地一键启动到生产集群

方式一:本地独立运行(推荐新手)

Metorikku 发布的 standalone JAR 已经内置了 Spark,环境要求仅 Java 1.8。官方示例的运行命令如下:

java -D"spark.master=local[*]" -cp metorikku-standalone.jar com.yotpo.metorikku.Metorikku -c examples/movies.yaml

一行命令,本地跑通完整管道,适合开发和调试阶段。

方式二:提交到 Spark 集群(生产部署)

生产环境用spark-submit提交即可,要求 Spark 2.2+:

spark-submit --class com.yotpo.metorikku.Metorikku metorikku.jar -c config.yaml

它支持远程配置路径(如s3://bucket/job.yaml),任何 Hadoop 生态支持的存储(S3、HDFS 等)都可以直接使用。

方式三:Docker 容器化部署

项目自带 Docker 镜像和多套 docker-compose 编排文件(见docker/目录),可以快速搭建 Spark Standalone、Hive、Kafka、Elasticsearch、InfluxDB 等完整实验环境,甚至内置了端到端测试套件(e2e/目录),非常适合 CI/CD 场景。

开箱即用的能力清单:10 种输入输出 + 数据质量 + 流处理

Metorikku 的覆盖面远超"文件转文件",以下是新手最关心的能力一览:

数据源与目的地

  • 📥输入:CSV、JSON、Parquet、JDBC(MySQL 等关系库)、Kafka、Cassandra、Elasticsearch、MongoDB、Hive
  • 📤输出:CSV、JSON、Parquet、Redshift、Cassandra、Segment、JDBC、Kafka、Elasticsearch、Hudi

内置数据质量检查(Data Quality)

管道最怕"静默产出脏数据"。Metorikku 允许在任意 SQL 步骤上挂载dq校验块,基于 AWSLabs Deequ 实现,支持以下校验操作符:

  • isComplete:列完整性(非空率)
  • isUnique/hasUniqueness:唯一性约束
  • hasSize:行数断言(支持 >、<、== 等操作符)
  • isContainedIn:取值范围校验

校验级别可设为WARN(仅告警)或ERROR(直接终止任务),还能把失败的数据集落盘为 Parquet 便于排查。详细说明见examples/dq/README.md,配套示例在examples/dq/目录。

结构化流式处理

把 Kafka 输入或文件流(isStream: true)配置进 Job 文件,整个管道即自动升级为基于 Spark Structured Streaming 的流式应用,支持 Watermark 处理迟到数据、微批触发器、多种输出模式等。流式示例可参考examples/kafka/kafka2kafka.yamlexamples/file_input_stream/job.yaml

自定义扩展(可选)

当 SQL 不够用时,Metorikku 提供两种无侵入扩展方式:内置的常用代码步骤(去重RemoveDuplicates、表结构对齐AlignTables、敏感列脱敏ObfuscateColumns等,源码位于src/main/scala/com/yotpo/metorikku/code/steps/),以及完全自定义的 UDF JAR 步骤——即便如此,管道主体依然是 YAML。

Metorikku Tester:像写文档一样测试 ETL 管道

这是 Metorikku 最被低估的特性。测试文件同样是一份 YAML,包含四要素:

  • metric:要测试的 Metric 文件路径
  • mocks:模拟输入数据(JSONL 文件)
  • params:测试时注入的变量
  • tests:期望的结果集

运行示例(对应examples/movies_test.yaml):

java -D"spark.master=local[*]" -cp metorikku-standalone.jar com.yotpo.metorikku.MetorikkuTester -t examples/movies_test.yaml

结果与期望一致则通过,不一致则输出详细差异报告。这意味着 ETL 管道第一次拥有了可自动化的单元测试,可以直接集成进 CI 流程,让数据管道的部署像应用代码一样可靠。

新手学习路径建议

  1. 第一天:克隆仓库https://gitcode.com/gh_mirrors/me/metorikku,用 standalone JAR 跑通examples/movies.yaml示例
  2. 第二天:把电影示例改成自己的业务 CSV,修改 SQL 步骤,理解 Job 与 Metric 的分工
  3. 第三天:接入真实数据源(JDBC 或 Kafka),并给关键步骤加上dq数据质量校验
  4. 进阶:为管道编写 Tester 用例,配置 Docker 环境做端到端验证

总结:SQL 会写,管道就能跑

Metorikku 证明了 ETL 不必是"重资产":用 Job + Metric 两个 YAML 文件定义管道、用 SQL 表达转换、用 Tester 保障质量、用 Docker 交付部署。无论你是想替代手工 SQL 脚本的数据分析师,还是希望降低团队维护成本的数据工程师,这套轻量级 ETL 框架都值得放进你的技术工具箱。

【免费下载链接】metorikkuA simplified, lightweight ETL Framework based on Apache Spark项目地址: https://gitcode.com/gh_mirrors/me/metorikku

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 12:48:09

ThinkPad X390 装 macOS 完整指南:一份开箱即用的 OpenCore EFI

ThinkPad X390 装 macOS 完整指南&#xff1a;一份开箱即用的 OpenCore EFI 【免费下载链接】ThinkpadX390-Opencore-EFI macOS Catalina & Big Sur & Monterey on ThinkPad X390 (Hackintosh) 项目地址: https://gitcode.com/gh_mirrors/th/ThinkpadX390-Opencore-E…

作者头像 李华
网站建设 2026/8/22 12:47:32

题解:洛谷 P8901 [USACO22DEC] Circular Barn S

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大家订阅我的专栏:算法…

作者头像 李华
网站建设 2026/8/22 12:45:23

【计算机网络 实验七】LINUX环境下UDP通信程序设计

实验记录&#xff0c;可能存在错误&#xff0c;仅供学习参考第1关UDP套接字创建与端口绑定1、双击打开桌面上的工作区文件夹workspace&#xff0c;再双击实训文件夹myshixun&#xff0c;打开文件message7-1.txt。2、在/home/headless/Desktop/workspace/myshixun/client/目录下…

作者头像 李华
网站建设 2026/8/22 12:44:21

VSCode配置js教程及VS Code常用教程

文章目录一、基础环境搭建二、核心插件配置浏览器调试一、基础环境搭建 安装 Node.js & npm 从 Node.js 官网 下载 LTS 版本安装包&#xff0c;安装时勾选自动配置环境变量选项&#xff0c;自定义安装位置&#xff0c;一直到最后安装&#xff0c;其它不要勾选。 验证安…

作者头像 李华