各位有没有遇到过spark sql查询hudi 数据时没有办法查到flink cdc 同步到hudi实时数据的变化,用hive是没有问题的。但是我重开一个spark sql客户端数据就能发现变化了?
这种情况可能是由于Spark SQL和Flink CDC之间的数据同步延迟导致的。当你在Spark SQL中查询Hudi数据时,可能会使用到缓存或者本地的临时表,这些表可能没有及时更新Flink CDC同步到Hudi的数据。
为了解决这个问题,你可以尝试以下方法:
清除Spark SQL的缓存:在执行查询之前,可以使用UNCACHE
命令来清除所有已加载的缓存。例如:
UNCACHE;
使用LATEST_PARTITION
或EARLIEST_PARTITION
来指定分区范围:这样可以确保查询的是最新的数据。例如:
SELECT * FROM hudi_table WHERE partition = 'latest';
检查Flink CDC的配置:确保Flink CDC的配置正确,包括源数据库、目标数据库、表名等。如果配置有误,可能会导致数据同步延迟。
调整Spark SQL和Flink CDC的同步频率:如果数据同步频率过高,可能会导致查询不到最新的数据。可以尝试降低同步频率,或者增加Flink CDC的并行度以提高数据同步速度。
考虑使用其他数据源:如果以上方法都无法解决问题,可以考虑使用其他数据源(如Kafka、Elasticsearch等)来查询Hudi数据,以减少对Spark SQL的依赖。
应该是 Spark 有缓存,设置 spark.sql.filesourceTableRelationCacheSize = 0 试下 ,此回答整理自钉群“Flink CDC 社区”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。