scala – 删除Spark DataFrame的第一行

前端之家收集整理的这篇文章主要介绍了scala – 删除Spark DataFrame的第一行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的Spark / Scala代码中有一个DataData类型的变量rawData.

我想删除第一个元素,如下所示:

rawData.drop(1)

但是,丢弃功能不可用.

删除第一个元素的最简单方法是什么?

解决方法

要回答这个问题,我们首先必须澄清什么是DataFrame的第一个元素,因为我们不是在谈论放置在单个机器上的有序集合,而是在处理分布式集合而在分区之间没有特定的顺序,所以答案并不明显.

如果您想从每个分区中删除第一个元素,您可以使用:

df.mapPartitions(iterator => iterator.drop(1))

如果要从第一个分区中删除第一个元素,可以使用:

val rdd = df.rdd.mapPartitionsWithIndex{
  case (index,iterator) => if(index==0) iterator.drop(1) else iterator
}
sqlContext.createDataFrame(rdd,df.schema)

这两种解决方案都不是很优雅,而且看起来很糟糕,知道完整的用例会很有趣,也许有更好的方法.

猜你在找的Scala相关文章