实时计算Flink版(Alibaba Cloud Realtime Compute for Apache Flink,Powered by Ververica)是阿里云基于Apache Flink构建的企业级高性能的实时大数据处理系统。Hologres与Flink深度连通,支持实时写入Flink的数据,可以实时查询写入的数据,帮助您快速搭建实时数仓。
形态说明
阿里云实时计算Flink版不进行业务存储,所有的数据均来自于外部存储系统持有的数据。阿里云实时计算Flink版支持的数据存储类型如下:
源表
源表指输入至Flink的数据输入源。Flink的源表指定为Hologres时,使用的是批量导入而非流式导入,Hologres会将全表的数据统一扫描一次后再输出至下游,扫描完成后本次作业结束。
维表
维表一般适用于点查询场景(Lookup by Key),因此在Hologres中,维表建议使用行存储,并且JOIN的字段必须是完整的主键字段。
结果表
结果表用于接收并存放经过Flink计算的结果数据,为下游数据继续消费提供各类读写接口。
阿里云实时计算Flink版还支持很多企业级高级能力,通过与Hologres深度集成,提供以下创新能力:
Hologres Binlog消费
使用消息队列的模式消费Hologres表的Change Log。
Flink Catalog
Flink支持导入Hologres元数据为Catalog,在Flink全托管控制台直接读取Hologres元数据,不用再手动注册Hologres表,可以提高开发效率且能保证表结构的正确性。
Schema Evolution
Flink全托管支持Schema Evolution,在Flink读取JSON数据时,可以自动解析类型,自动创建对应表的列,支持数据模型的动态演化。
Hologres支持的Flink产品形态及功能如下表所示。
产品形态
数据存储类型
企业级高级能力
描述
源表
结果表
维表
Hologres Binlog消费
Flink Catalog
Schema Evolution
Flink半托管
支持行存储及列存储,Binlog源表建议使用行存储或行列共存。
支持行存储及列存储
建议使用行存储或行列共存
支持
支持
支持
使用EMR Studio开发平台。
Blink独享(已停售)
支持行存储及列存储,Binlog源表建议使用行存储或行列共存。
支持行存储及列存储
建议使用行存储或行列共存
Hologres V0.8版本只支持行存储,V0.9及以上版本支持行存储及列存储。建议使用行存储。
不支持
不支持
使用Bayes开发平台。
推荐使用阿里云Flink全托管。
开源Flink1.10
不支持
支持行存储及列存储
不支持
不支持
不支持
不支持
-
开源Flink1.11及以上版本
不支持
支持行存储及列存储
建议使用行存储
不支持
不支持
不支持
从开源Flink1.11版本开始,Hologres代码已开源。详细内容请参见GitHub。
开源Flink1.13及以上版本
支持批量源表
支持行存储及列存储
建议使用行存储
不支持
不支持
不支持
从开源Flink1.11版本开始,Hologres代码已开源。详细内容请参见GitHub。
Hologres Connector Release Note
Flink版本 | 阿里云实时计算VVR版本 | Hologres版本 | 更新信息 | 相关文档 |
1.17 | 8.0.7 | 2.1.x | 维表:修复维表字段较多时,频繁获取元数据导致作业上线超时的问题。 通用:修复不同的表使用了多个不同的用户,共享连接池时抛出权限不足异常的问题。 | |
1.17 | 8.0.6 | 2.1.x | 源表:
通用:
| |
1.17 | 8.0.5 | 2.0.x 2.1.x | 源表:
结果表:
通用:
| |
1.17 | 8.0.4 | 2.0.x 2.1.x | 源表:
通用:
| |
1.17 | 8.0.3 | 2.0.x 2.1.x | 通用:
| |
1.15 | 6.0.7 |
|
| |
1.15 | 6.0.6 | 1.3.x | 源表:
| |
1.15 | 6.0.5 | 1.3.x |
| |
1.15 | 6.0.3~6.0.4 | 1.3.x | 源表:
结果表: 支持以Fixed Copy的模式写入,Fixed Copy是Hologres1.3版本新增的能力,相比通过JDBC模式进行写入,Fixed Copy方式可以实现更高的吞吐(因为是流模式)、更低的数据延时和更低的客户端内存消耗(因为不攒批)。 Hologres Catalog:
sdkMode参数:Hologres不同类型的表都有多种模式可以选择,此版本开始统一整理为sdkMode参数。 | |
1.13 | 4.0.18 | 1.1及以上版本 | 修复Sink表上报Metrics影响写入性能的问题。 | |
1.13以及1.15 | 4.0.15以及6.0.2 | 1.1及以上版本 | 源表:
维表: Hologres维表支持异步请求的超时时间(asyncTimeoutMs)设置。 结果表:
| |
1.13 | 4.0.13 | 1.1及以上版本 |
| |
1.13 | 4.0.11 | 0.10及以上版本 | 支持CTAS、CDAS。 | |
1.13 | 4.0.8 | 0.10及以上版本 | 结果表、源表、维表支持Hologres Catalog。 | |
1.13 | 3.0.0 | 0.9及以上版本 | 支持实时消费Hologres。 |
Hologres Connector已知缺陷和修复版本
等级 | 缺陷描述 | 影响版本 | 修复版本 | 解决方法 |
P1 | 维表字段数量较多时,作业上线超时。 | 8.0.6 | 8.0.7 | 建议升级版本。 |
P0 | 当在批量源表中开启 说明 全增量和Binlog源表不存在此问题。 | 8.0.5及之前版本 | 8.0.6 | 建议升级版本。 |
P0 | 通过FixedFE(对应Connector中的 | 8.0.5及之前版本 | 暂无 | 如果无法保证上游JSON或JSONB字符串的合法性,建议使用JDBC模式写入。 |
P1 | JDBC维表一对多Join时,内部出现的连接失败等异常无法抛出,表现为异步Join节点反压且数据不再流动,发生概率较小。 | 6.0.7及之前版本 | 8.0.3 | 建议升级版本,也可以通过重启作业暂时恢复。 |
P1 | 通过JDBC模式消费Binlog时,存在内存泄漏问题。可能的表现为作业启动时消费速率较高,之后持续下降。 | 6.0.7及之前版本 | 6.0.7 | 建议升级版本,对于DataStream作业,需要使用6.0.7-1版本的依赖。 |
P0 | JDBC模式写入的定时Flush(由jdbcWriteFlushInterval参数控制)捕获的异常在下条数据写入时才会抛出,当用户写入流量较小时,异常被捕获还未抛出期间有可能进行成功的checkpoint。下次失败时会从这个不合理成功的checkpoint恢复,从而可能出现丢数据的情况。 | 6.0.6及之前版本 | 6.0.7 | 流量较小时容易出发此缺陷,建议升级版本,或者调整jdbcWriteFlushInterval时间大于checkpoint的间隔时间。 |
P2 | JDBC模式消费Binlog不设置Slotname时,系统会自动创建一个Slotname。若当表名含有特殊字符或Schema名称时,自动创建非法Slotname,无法使用,且作业将会抛出syntax error异常。 | 6.0.6 | 6.0.7 | 建议升级版本,对于DataStream作业,需要使用6.0.7-1版本的依赖。 |
P1 | 用户作业中不同的Hologres实例或数据库使用相同的 | 6.0.6及之前版本 | 6.0.7 | 同一个作业使用的Hologres实例或者数据库不同时,使用不同的 |
P1 | 维表字符串类型有 | 6.0.6 | 6.0.7 | 建议升级版本。 |
P0 | Hologres源表默认开启Filter下推,但如果作业也使用了Hologres维表,且写入的DML中包含对维表非主键字段的过滤条件时,维表的Filter也会被错误地下推,可能导致维表Join出现错误结果。 | 6.0.3~6.0.5 | 6.0.6 | 建议升级版本。 |
P0 | 多个结果表的 | 6.0.2及之前版本 | 6.0.3 | 将全部结果表的 |
P1 | Binlog源表DDL中声明 | 6.0.2 | 6.0.3 | 不使用所述字段,或者升级版本。 |
P1 | 汇报Metrics会影响结果表的写入性能,排查表现为Sink节点的 | 4.0.15~4.0.17 | 4.0.18 | 选择没有受影响的版本。 |
P2 | 批量源表读取字符或字符数组类型,其中比较特殊字符时,解析字符串失败。 | 4.0.14及之前版本 | 4.0.15 | 清理源表中的脏数据,或者升级版本。 |
P2 | 全增量一体化源表DDL中声明 | 4.0.13 | 4.0.14 | 不使用全增量功能,或者升级版本。 |