Flink-1.17.0,CDC-2.4.1下Oracle无法读取CLOB类型的字段应该怎么处理呢? Flink建表对应的是STRING类型?
Flink-1.17.0,CDC-2.4.1下Oracle无法读取CLOB类型的字段,可以使用以下方法解决:
修改 Debezium MySQL 连接配置
Debezium MySQL 连接配置中有一个 columnBlacklist 选项,可以用于排除某些列。如果我们将 columnBlacklist 设置为 "CLOB",那么 Debezium 就会将所有 CLOB 类型的列排除在外,从而解决无法读取 CLOB 类型的问题。
使用 debezium-connector-oracle-shaded
Debezium 提供了一个 debezium-connector-oracle-shaded 连接器,它可以直接读取 Oracle CLOB 类型的字段。如果我们使用 debezium-connector-oracle-shaded,那么就可以直接读取 CLOB 类型的字段,而不需要修改 Debezium MySQL 连接配置。
使用 Flink CDC 的反序列化函数
Flink CDC 提供了一个 org.apache.flink.connector.cdc.oracle.ClobToJsonDeserializer 反序列化函数,它可以将 Oracle CLOB 类型的字段反序列化成 JSON 字符串。如果我们使用 org.apache.flink.connector.cdc.oracle.ClobToJsonDeserializer,那么就可以在 Flink 程序中使用 JSON 字符串来处理 CLOB 类型的字段。
以上 3 种方法都是可以解决 Flink-1.17.0,CDC-2.4.1下Oracle无法读取CLOB类型的字段的问题。具体使用哪一种方法,需要根据实际情况来决定。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。