DataWorks中oracle reader splitPk支持字符串类型?
现象:
配置并发8,实际只跑了1。
报了个 Warn: [Note]: The splitting primary key [splitPk] you configured for OracleReader is: POLICYNO. Due to the too many repeated values in the splitting primary key, or the too few records in the source table, the number of tasks actually split by DataX is 1, less than the number of channels you configured: 8. Therefore, please take note that the actual concurrent channels of this synchronization task is: channel=1.
解决:
oracle 支持 string的splitPK,需要转换成脚本模式,参考这个配置一下"splitMode":"ramdomSampling";
splitFactor可以设置小一点,比如10或者50。
,此回答整理自钉群“DataWorks交流群(答疑@机器人)”
在DataWorks中,Oracle Reader插件的splitPk参数默认是不支持字符串类型的。splitPk参数用于将读取任务分片化,以提高读取性能。
然而,如果你想要在Oracle Reader中使用字符串类型的splitPk,可以通过以下两种方式实现:
使用数字范围代替字符串:可以通过将字符串转换为数字范围来模拟对字符串类型的splitPk进行分片。例如,假设有一个字符串类型的字段"category",可以将其映射为数字范围(如1-100、101-200等),然后在Oracle Reader中设置splitPk为数字范围,以实现类似的效果。
自定义SQL逻辑:可以通过自定义SQL查询语句,在WHERE条件中使用合适的字符串条件来实现对字符串类型字段的分片。例如,在查询中添加类似于 "WHERE category >= 'A' AND category <= 'D'" 的条件来限制读取的数据范围。
需要注意的是,以上方法是一种绕过Oracle Reader插件默认设置的方式,并且可能需要根据具体情况进行调整和优化。此外,确保在使用字符串类型的splitPk时考虑到数据分布的均匀性和查询性能的影响。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。