互联网诞生之初虽然数据量暴增,单日事实表条数达千万级别,
但客户需求场景更多是“t+1”形式,只需对当日、当周、当月数据进行分析,这些诉求仅离线分析就可满足。
随着大数据领域不断发展,企业对于业务场景的诉求也从离线的满足转到高实时性的要求,数栈产品也在这一过程中进行着不断的迭代升级,随之诞生了kafka+flink组合 ,同时kafka + etl-engine(融合计算的加持)组合也实现了轻量级的流式计算引擎。
流计算与批计算对比
- 数据时效性
流式计算实时、低延迟,流式计算适合以“t+0”的形式呈现业务数据;
批计算非实时、高延迟,批计算适合以“t+1”的形式呈现业务数据; - 数据特征
流式计算数据一般是动态数据,数据是随时产生的;
批计算数据一般是静态数据,数据事先已经存储在各种介质中。 - 应用场景
流式计算应用在实时场景,如:业务监控、实时推荐等。
批计算应用在离线计算场景,如:数据分析、离线报表等。 - 运行方式
流式计算的任务是阻塞式的,一直持续运行中。
批计算的任务是一次性完成即结束。
etl-engine 实现流式计算
etl-engine 支持通过自身提供的 ”kafka消费节点“进行消息消费,并在消费数据流(消息流)的同时调用自身提供的“融合查询API”,实现将多种数据源的维表数据读取到内存中,然后将消息流与多个维表数据进行各种关联查询,最后输出融合查询结果集到目标源,常用在将多个维表数据与实时消息流关联后转换成一个大宽表的场景。
融合查询语法
融合查询语法遵循ANSI SQL标准,与常规MySQL查询语法很相似。
- 支持对多种类别数据库之间读取的数据进行融合查询。
- 支持消息流数据传输过程中动态产生的数据与多种类型数据库之间的流计算查询。
- 融合查询语法遵循ANSI SQL标准。
select 支持
SELECT
[DISTINCT] field [, field ...]
FROM table [, table ...]
[WHERE condition]
[GROUP BY field [, field ...] ]
[HAVING condition]
[ORDER BY order_item [, order_item ...] ]
[LIMIT number_of_records [OFFSET number_of_records ] ]
table 支持
INNER JOIN
LEFT JOIN
RIGHT JOIN
OUTER JOIN
CROSS JOIN
后续会详细介绍融合查询支持的内容
参考资料
[免费下载](https://github.com/hw2499/etl-engine/releases)
[etl-engine使用手册](https://github.com/hw2499/etl-engine)
[etl-crontab使用手册](https://github.com/hw2499/etl-engine/wiki/etl-crontab%E8%B0%83%E5%BA%A6)
[嵌入脚本开发](https://github.com/hw2499/etl-engine/wiki/%E5%B5%8C%E5%85%A5%E8%84%9A%E6%9C%AC%E5%BC%80%E5%8F%91)
[etl-engine配置样例](https://github.com/hw2499/etl-engine/wiki/etl-engine%E4%BD%BF%E7%94%A8%E6%A0%B7%E4%BE%8B)