Spark SQL中的OFFSET相当于什么?



我使用 Spark SQL 得到了一个 100 行的结果集。我想从第 6 行到第 15 行获得最终结果。在 SQL 中,我们使用OFFSET来跳过行,就像OFFSET 5 LIMIT 10用于获取从数字 6 到 15 的行一样。在Spark SQL中,我怎样才能实现相同的目标?

我猜SparkSQL不支持偏移量。所以我使用id作为过滤条件。每次,我只检索N个数据。

以下是我的示例代码:

sc = SparkContext()  
sqlContext = SQLContext(sc)
df = sqlContext.read.format('com.databricks.spark.csv')
.options(header='false', inferschema='true')
.load('your.csv')
sqlContext.registerDataFrameAsTable(df, "table")
batch_size = 10 ** 5
res = sqlContext.sql("select min(C0), max(C0) from table).collect()
index = int(res[0]._c0) - 1
N_max = int(res[0]._c1)
while index < N_max:
prev = index
sql = "select C0, C1, C2, C3 from table 
where C0 > '%s' and C0 <= '%s' 
order by C0 limit %d" % (index, index+batch_size, batch_size)
res = sqlContext.sql(sql).collect()
# do something ...
if index < prev + batch_size:
index = prev + batch_size

相关内容

  • 没有找到相关文章

最新更新