在 Pyspark HiveContext 中,SQL OFFSET 的等价物是啥?

Posted

技术标签:

【中文标题】在 Pyspark HiveContext 中,SQL OFFSET 的等价物是啥?【英文标题】:In Pyspark HiveContext what is the equivalent of SQL OFFSET?在 Pyspark HiveContext 中,SQL OFFSET 的等价物是什么? 【发布时间】:2017-03-02 16:30:41 【问题描述】:

或者更具体的问题是如何处理无法一次放入内存的大量数据?使用 OFFSET 我试图做 hiveContext.sql("select ... limit 10 offset 10") 同时增加偏移量以获取所有数据,但偏移量在 hiveContext 中似乎无效。通常用于实现此目标的替代方法是什么?

对于某些上下文,pyspark 代码以

开头
from pyspark.sql import HiveContext
hiveContext = HiveContext(sc)
hiveContext.sql("select ... limit 10 offset 10").show()

【问题讨论】:

Hive 不给它,但它可以用 cte 和行号 achivsd @sandeeprawat 你能提供一个小例子或指点我的功能吗? 【参考方案1】:

你的代码看起来像

  from pyspark.sql import HiveContext
hiveContext = HiveContext(sc)
hiveContext.sql("    with result as
 (   SELECT colunm1 ,column2,column3, ROW_NUMBER() OVER (ORDER BY columnname) AS RowNum FROM tablename )
select colunm1 ,column2,column3 from result where RowNum >= OFFSEtvalue and  RowNum < (OFFSEtvalue +limtvalue ").show()

注意:根据您的要求更新以下变量 tcolunm1 , tablename, OFFSEtvalue, limtvalue

【讨论】:

以上是关于在 Pyspark HiveContext 中,SQL OFFSET 的等价物是啥?的主要内容,如果未能解决你的问题,请参考以下文章

PySpark 无法通过 sparkContext/hiveContext 读取 Hive ORC 事务表?我们可以使用 Pyspark 更新/删除配置单元表数据吗?

无法使用 pyspark 从 hive 表中查询复杂的 SQL 语句

HiveContext 与火花 sql

Spark HiveContext 使用 sql 方法应用 IN 操作

具有 HiveContext 的多个 Spark 应用程序

PySpark 和 HIVE/Impala