spark中sqlContext函数不能完全实现业务逻辑,引入hiveContext,解决开窗函数TOP-N问题

异常报错: spark中sqlContext函数不能完全实现业务逻辑,引入hiveContext,解决开窗函数TOP-N问题

问题描述:

1、为什么用hiveContext?

在开发spark程序中,sqlContext函数不能完全实现业务逻辑,所以会引入hiveContext,(本次用到hiveContext中的开窗函数TOP-N)。

原因分析:

在SQLContext上下文是不支持开窗函数的,用他来解决TOP-N问题,写的sql有点复杂,执行效率相对较低,可使用HiveContext,使用row_number() over(partition  by column_1 order by column_2 ) 开窗函数比较方便的解决TOP-N问题。

解决办法:

 spark中sqlContext函数不能完全实现业务逻辑,引入hiveContext,解决开窗函数TOP-N问题

开发任务写的完整sql如图,(使用oracle数据库读字段大写)

 spark中sqlContext函数不能完全实现业务逻辑,引入hiveContext,解决开窗函数TOP-N问题

即可解决异常

spark中sqlContext函数不能完全实现业务逻辑,引入hiveContext,解决开窗函数TOP-N问题