spark sql correlated scalar subqueries must be aggregated 错误解决
最近在客户中使用spark sql 做一些表报处理,但是在做数据关联时,老是遇到 “correlated scalar subqueries must be aggregated” 错误
举一个例子,这个sql 在oracle 或者 postgresql 都是可以正常运行的,但是在spark sql 就会报错“correlated scalar subqueries must be aggregated”
SELECT A.dep_id,
A.employee_id,
A.age,
(SELECT age FROM employee B WHERE A.dep_id = B.dep_id) max_age
FROM employee A
ORDER BY 1,2
在参考博客参考博客中就有一个解决方案
SELECT A.dep_id,
A.employee_id,
A.age,
(SELECT MAX(age) FROM employee B WHERE A.dep_id < B.dep_id) max_age
FROM employee A
ORDER BY 1,2
- 问题分析
实际上,发生问题的地方是 子查询 “SELECT age FROM employee B WHERE A.dep_id = B.dep_id”。
为什么会发生这个错误呢?
因为在spark sql 中,执行select 的关键字地方,如果sql 中依然包括子查询,这个时候有一个问题,就是如果子查询返回多个结果集会有不可预期的结果,所以就会报错:
“correlated scalar subqueries must be aggregated”。
然后解决的思路就是简单了,如果spark sql 担心select 关键字中当有子查询并且会返回多个记录,那么我们只要保证 子查询 只会返回一个结果,就能够完美解决这个问题,所以我们改造的思路就是在子查询中,增加 Max() 函数,这样就可以确保子查询返回结果只有一个。
spark sql correlated scalar subqueries must be aggregated 错误解决的更多相关文章
- SQL还原备份数据库读取失败 38错误解决办法
连接上数据库后新建查询执行以下命令: RESTORE DATABASE 还原后的数据库名 FROM DISK = 'D:\yjdb\pms_yj_20110722.bak(备份文件)' WITH RE ...
- Spark SQL 1.3测试
Spark SQL 1.3 参考官方文档:Spark SQL and DataFrame Guide 概览介绍参考:平易近人.兼容并蓄——Spark SQL 1.3.0概览 DataFrame提供了一 ...
- spark sql建表的异常
在使用spark sql创建表的时候提示如下错误: missing EOF at 'from' near ')' 可以看下你的建表语句中是不是create external table .... ...
- Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN
Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession ...
- Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets
Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession ...
- Spark SQL 之 Data Sources
#Spark SQL 之 Data Sources 转载请注明出处:http://www.cnblogs.com/BYRans/ 数据源(Data Source) Spark SQL的DataFram ...
- Spark SQL 之 DataFrame
Spark SQL 之 DataFrame 转载请注明出处:http://www.cnblogs.com/BYRans/ 概述(Overview) Spark SQL是Spark的一个组件,用于结构化 ...
- 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL
周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...
- Spark 官方文档(5)——Spark SQL,DataFrames和Datasets 指南
Spark版本:1.6.2 概览 Spark SQL用于处理结构化数据,与Spark RDD API不同,它提供更多关于数据结构信息和计算任务运行信息的接口,Spark SQL内部使用这些额外的信息完 ...
随机推荐
- .net 项目中cookie丢失解决办法
创建cookie的时候 HttpCookie PdaCookie = new HttpCookie("Pda");PdaCookie ["PdaId"] = 1 ...
- python中进程池和回调函数
一.数据共享 1.进程间的通信应该尽量避免共享数据的方式 2.进程间的数据是独立的,可以借助队列或管道实现通信,二者都是基于消息传递的. 虽然进程间数据独立,但可以用过Manager实现数据共享,事实 ...
- SAP smartforms打印数据出框线或跟框线重叠,但是预览是正常的
如图,打印内容压在框线上,但是打印预览是正常的 预览图如下,预览是正常的 预览用PDF!命令,导出PDF,也是正常的,就直接打印有问题,不是打印机的问题,用Adobe PDF打印机也是不行 如果只有一 ...
- SQL server 查看什么语句在使用临时表
SQL server 查询那些语句在使用临时表 最近在日常的性能测试工作中发现,数据库端的IO读写比较大,有规律的2-8M的波动,数据库的版本为 SQL server 2008 sp3. 这些IO操作 ...
- 断路器,AOP实现断路器模式 ------------Hystrix
断路器:https://martinfowler.com/bliki/CircutiBreaker.html 核心思想: 在断路器对象中封装受保护的方法调用. 该断路器监控调用和断路情况 调用失败触发 ...
- 【五一qbxt】day4 数论知识
这些东西大部分之前都学过了啊qwq zhx大概也知道我们之前跟着他学过这些了qwq,所以: 先讲新的东西qwq:(意思就是先讲我们没有学过的东西) 进制转换 10=23+21=1010(2) =32+ ...
- Day3---Python的time库的一些简单函数以及用法
time库的一些函数 time.time () : 获取当前时间戳,即计算机内部时间值,浮点数 >>>import time >>> time.time() 1 ...
- java 关于泛型的一些知识点
public class Generic <T>{ private T ob; public Generic(T ob){ this.ob=ob; } public T GetOb(){ ...
- codeforces 448CPainting Fence
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/y990041769/article/details/37935237 题目:codeforces 4 ...
- 【转】Linux下vim的基本操作
原文链接 Linux vi/vim 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能 ...