开发者社区> 问答> 正文

数据集中的row_number。Row_number apis导致数据帧。

数据集中的row_number。Row_number apis导致数据帧。
任何人都可以让我知道如何获取数据集中的row_number。Row_number apis导致数据帧。我不想将数据集转换为数据框,然后返回到仅用于row_number计算的数据集。

展开
收起
社区小助手 2018-12-19 15:52:18 1489 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    DatasetsSpark中的工作方式是,如果对它们应用任何转换,它们将转换为Dataframe内部转换,Dataset[Row]并且此行为仅符合逻辑。让我用一个例子向你解释一下。

    假设您有以下案例类。

    case class Person(SSN: Int, Name: String)
    你有一个Dataset[Person]参考people

    现在,如果你做people.withColumn("row_number", row_number())这个模式不再适合Person类,必须转换为泛型Row类型,因此Dataset[Person]成为Dataset[Row] / Dataframe。

    因此,如果你想添加row_number并仍然希望它是一个Dataset[Person]我建议你在你的case类中添加一个额外的字段。

    case class Person(SSN: Int, Name: String, row_number: Long)
    这样,当您添加新列时,row_number每一行仍将符合案例类,Person并且不会转换为泛型Row类型。

    2019-07-17 23:22:59
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
How big data can help small data? 立即下载
对 2000 多亿条数据做一次 group by 需要多久? 立即下载
对2000多亿条数据做一次Group By 需要多久 立即下载