kaka
  • 4
  • 新人请关照

如何用java实现SparkSQL dataframe添加自增序号列?

用spark分页查询数据,普通的sql()的不支持分页的sql语句
在网上查资料说可以增加一个序列实现
但是基本都是scala语言
// 在原Schema信息的基础上添加一列 “id”信息

val schema: StructType = dataframe.schema.add(StructField("id", LongType))

// DataFrame转RDD 然后调用 zipWithIndex
val dfRDD: RDD[(Row, Long)] = dataframe.rdd.zipWithIndex()

val rowRDD: RDD[Row] = dfRDD.map(tp => Row.merge(tp._1, Row(tp._2)))

// 将添加了索引的RDD 转化为DataFrame
val df2 = spark.createDataFrame(rowRDD, schema)

df2.show()

如何用java实现呢

阅读 1k
评论 更新于 2019-02-21
    1 个回答
    西門吹牛__Linux
    • 2
    • 新人请关照

    我直接一个 dataframe.withColumn("id", row_number().over(Window.orderBy("xxx"))) 直接就添加id了。
    不要再DF转RDD再转DF了。

    评论 赞赏 2019-08-28
      撰写回答

      登录后参与交流、获取后续更新提醒