oracle转sparksql工具化,oracleSQL 转 SPARKSQL(hiveSql) 及常用优化

在数据平台从Oracle迁移到Hadoop后,文章介绍了如何将Oracle SQL转换为SparkSQL,并提供了一些优化策略,如避免笛卡尔积、处理数据倾斜、优化join操作等,以确保任务的稳定执行和资源效率。
摘要由CSDN通过智能技术生成

背景

数据处理平台从oracle迁移到hadoop平台后,原有的数据处理过程需要改写为sparkSql。由于sparkSql执行环境和数据的不确定,经常有资源竞争导致处理过程意外停止,数据倾斜导致任务执行失败。 为减少出错概率,需要对sparkSql进行规范与优化。

转换

exist 转换 为 left sime join,left sime join不会因为右表有重复而数据增加。

from table1, table2,table3 转为 inner join ,使用join 会更清晰的分辨表连接是否充分,以免笛卡尔积引起集群资源浪费。

decode()转为 case when

在使用union all 时 ,sql编译出错, 需要指定数据类型如: cast(abe001 as double)

分清count(columnName)意义 ,尽量使用sum替换count

oracle form前的子查询必须放在join 之后

时间格式请使用"yyyy-MM-dd HH:mm:ss",YYYY表示当天所在的周的年份可能结果不是想要的,hh是12小时制,在对时间做计算是会出错。

在对字符串的数字做比较是请转为 int或 double型,如果数据中与非数字字符或导致按字符串的方式比较大小。

sql对 大数 经行字符处理时,注意可以会被转成科学计数法。

x. 在对字符或时间做处理时,请先使用select 查看处理结果,以免出现不想要的结果。

数据倾斜

数据倾斜报错

通常数据倾斜有以下几种现象:

java.util.concurrent.TimeoutException: F

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值