任务流程: OGG->KAFKA->FLINK->HIVE
KAFKA数据样例: 其中会有多个 "table",所以"before","after"中的字段是不一致的,同一个表如果有有DDL变更也会导致"before","after"字段的变更。 { "table": "SCOOT.TABLENAME", "op_type": "U", "op_ts": "2020-08-11 07:53:40.008001", "current_ts": "2020-08-11T15:56:41.233000", "pos": "00000000980119769930", "before": { "C1": 4499000, "C2": null, "C3": null, "C4": null, "C5": null }, "after": { "C1": 4499000, "C2": null, "C3": "0000", "C4": "0000", "C5": "通过" } } 问题:有没有优雅的方式在入到hive中可以跟源库表及结构一致? 看到很多FLINK to HIVE 的案例,很多大公司也都在用实时数仓,不知入hive这部分如果做到灵活,拓展,通用的?
例如 样例数据在hive中建表 create table TABLENAME ( op_type STRING, op_ts STRING, current_ts STRING, pos STRING, "C1" STRING, "C2" STRING, "C3" STRING, "C4" STRING, "C5" STRING ) 理解的难点, 1.同一FLINK任务需要写入多个表,每个表的字段是不一致的 2.同一FLINK任务会有新增的表,需自动适配 3.同一个表结构不是固定的,需要随着源库DDL变更而变更,可能的字段类型长度变更,新增删除字段等
或者只能采用通过表结构 create table TABLENAME ( table STRING, op_type STRING, op_ts STRING, current_ts STRING, pos STRING, "before" STRING, "after" STRING ) 然后剩下的在HIVE中解决。
或者有其他更好的方案?*来自志愿者整理的flink邮件归档
你提到的这三个难点现在的hive connector确实是支持不了的。前两个也许可以通过把写不同的表变成写同一个表的不同分区来解决。第三个可能可以通过检查数据跟目标schema是不是匹配,来判断是不是需要去跟HMS同步新的schema。*来自志愿者整理的flink
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。