23. SparkSQL - The correlated scalar subquery can only contain equality predicates

23.

SparkSQL - The correlated scalar subquery can only contain equality predicates

https://stackoverflow.com/questions/41631199/sparksql-the-correlated-scalar-subquery-can-only-contain-equality-predicates

写spark Sql时,用到了嵌套select查询,但sql解析报错,究其原因,和spark本身sql解析机制有关,解决办法是:

改写原有sql即可。下面给出我的一个demo

##有个需求:填充非交易日股票价格,那么需要找到离非交易日最近的那个交易日股价。

###########
# 报错sql
 val wrongDF = ss.sql("""
                             select a.stock_id, a.code, a.date_id, a.date_value, 
                             (select max(b.date_id)                              
                             from stockPriceNotNullDF b
                             where b.stock_id = a.stock_id and b.date_id < a.date_id
                             ) as oid
                             from stockPriceNullDF a
                             group by a.stock_id, a.code, a.date_id, a.date_value
                             order by a.stock_id, a.date_id
                         """)   

#提示
The correlated scalar subquery can only contain equality predicates

###################
# 改写之后的sql,放弃使用子查询方式

 val rightDF = ss.sql("""
                             select a.stock_id, a.code, a.date_id, a.date_value,     
                             max(b.date_id) as oid
                             from stockPriceNullDF a, stockPriceNotNullDF b
                             where b.stock_id = a.stock_id and b.date_id < a.date_id
                             group by a.stock_id, a.code, a.date_id, a.date_value
                             order by a.stock_id, a.date_id
                         """)   

 

此贴来自汇总贴的子问题,只是为了方便查询。

总贴请看置顶帖:

pyspark及Spark报错问题汇总及某些函数用法。

https://blog.csdn.net/qq0719/article/details/86003435

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值