- Spark sql中Join默认是inner join。
- 如果join的字段在两个表中都有,那么可以使用Seq(“字段名”)指定join的字段,这样两个表的公共字段不需要做去重处理。
- 如果join的两个表字段不一致,可以使用tabNm(“col1”)===tabNm(“col2”)这种方式进行不同字段之间的join操作,但是在结果表中可能回产生重复列,所以需要对结果表中的列进行删除处理,如果drop某一列,那么结果表中如果有多个列明一样的列,都会删除掉,所以在join之前,尽量将另一个表中的字段重命名,保证join后不会产生重复列。
- Join两个表的on条件,尽量直接写在on条件里,不要将条件提升到where过滤后面,将条件写在on后面,不会影响整个结果表的数据量,但是回应i想右表的数据量,加快join速度,但是将条件写在where过滤后面,回影响结果表中的数据量,也就是影响左表的数据量。
- Select表达式selectExpr,在使用select的时候,要求select里面的列类型相同,比如字符串,可以使用selectExpr给所有列进行重命名,方便之后表之间做子连接,自连接会产生重复列。
大约 5 分钟