在Spark中将过滤器应用于数组Column的元素的最简洁方法是什么

戴夫·德卡普里奥(Dave DeCaprio)

我有一个Spark DataFrame,其中我的一列是对象数组。我想做一个过滤该数组的操作。在下面的示例中,我有一个有孩子的父母,我只想让成年孩子。

import spark.implicits._

case class Child(name: String, age: Int)
case class Parent(name: String, children: Array[Child])

val rawData = Seq(Parent("Mom", Array(Child("Jane", 9))), Parent("Dad", Array(Child("Hubert", 28), Child("David", 27), Child("Jim", 25))))
val data = spark.createDataFrame(rawData)

我能找到的最接近的是:

val adultChildren = udf((children: mutable.WrappedArray[Child]) => {
  val rowArray = children.asInstanceOf[mutable.WrappedArray[GenericRowWithSchema]]
  val ret = rowArray.filter(c => c.getAs[Int]("age") > 18)
  ret.asInstanceOf[mutable.WrappedArray[Child]]
})
data.select(adultChildren($"children")).show()

这有点烦人。我猜它的优点是Spark花更少的时间(反序列化对象),但是它很冗长。

有没有更简洁的方法可以做到这一点?

贾斯汀·皮洪尼(Justin Pihony)

如果您可以使用数据集,那么它将变得非常简单:

data.map(_.children.filter(_.age > 18).toList)

但是,如果您不拘泥于DataFrames:

data.select($"name", explode($"children").as("child"))
    .where($"child.age" > 18)
    .groupBy($"name").agg(collect_list($"child"))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在KonvaJS中将过滤器应用于具有图像填充的形状?

来自分类Dev

在春季启动中将过滤器应用于特定网址格式的注释

来自分类Dev

在prefetch_related()中将过滤器应用于Prefetch

来自分类Dev

如何在AngularJS中将过滤器应用于特定属性?

来自分类Dev

将过滤器应用于列表并显示数据

来自分类Dev

RDLC报告:将过滤器应用于报告

来自分类Dev

Haskell HIP:将过滤器应用于图像

来自分类Dev

将过滤器应用于ListView的单个项目

来自分类Dev

将过滤器应用于嵌套对象的 *ngFor

来自分类Dev

如何将过滤器应用于 {%...%}?

来自分类Dev

尝试将过滤器应用于充满对象的嵌套数组

来自分类Dev

J:关于将过滤器序列应用于列表的最佳方法

来自分类Dev

将过滤器应用于过滤器参数

来自分类Dev

在 spring 集成中将过滤器应用于入站 ftp 适配器的顺序

来自分类Dev

如何将过滤器应用于具有多个“ AND”条件的DataView

来自分类Dev

将过滤器应用于巨大的csv文件中的标头

来自分类Dev

Doctrine2是否将过滤器应用于删除语句

来自分类Dev

将过滤器应用于没有CSS的HTML5视频

来自分类Dev

将过滤器应用于Scala Map时,如何查看已删除的条目?

来自分类Dev

如何将过滤器号应用于输入值 AngularJS

来自分类Dev

将过滤器应用于kendo-ui下拉列表

来自分类Dev

使用queryset将过滤器应用于嵌套反向外键关系

来自分类Dev

根据条件将过滤器应用于数据框

来自分类Dev

查询数据框,但仅将过滤器应用于列值不是NaN的行

来自分类Dev

如何转换此数据框并将过滤器应用于单元格?

来自分类Dev

如何将过滤器应用于具有多个“ AND”条件的DataView

来自分类Dev

JPA如何将过滤器应用于EJB条件查询

来自分类Dev

将过滤器应用于没有CSS的HTML5视频

来自分类Dev

将过滤器应用于Scala Map时,如何检查已删除的条目?

Related 相关文章

  1. 1

    如何在KonvaJS中将过滤器应用于具有图像填充的形状?

  2. 2

    在春季启动中将过滤器应用于特定网址格式的注释

  3. 3

    在prefetch_related()中将过滤器应用于Prefetch

  4. 4

    如何在AngularJS中将过滤器应用于特定属性?

  5. 5

    将过滤器应用于列表并显示数据

  6. 6

    RDLC报告:将过滤器应用于报告

  7. 7

    Haskell HIP:将过滤器应用于图像

  8. 8

    将过滤器应用于ListView的单个项目

  9. 9

    将过滤器应用于嵌套对象的 *ngFor

  10. 10

    如何将过滤器应用于 {%...%}?

  11. 11

    尝试将过滤器应用于充满对象的嵌套数组

  12. 12

    J:关于将过滤器序列应用于列表的最佳方法

  13. 13

    将过滤器应用于过滤器参数

  14. 14

    在 spring 集成中将过滤器应用于入站 ftp 适配器的顺序

  15. 15

    如何将过滤器应用于具有多个“ AND”条件的DataView

  16. 16

    将过滤器应用于巨大的csv文件中的标头

  17. 17

    Doctrine2是否将过滤器应用于删除语句

  18. 18

    将过滤器应用于没有CSS的HTML5视频

  19. 19

    将过滤器应用于Scala Map时,如何查看已删除的条目?

  20. 20

    如何将过滤器号应用于输入值 AngularJS

  21. 21

    将过滤器应用于kendo-ui下拉列表

  22. 22

    使用queryset将过滤器应用于嵌套反向外键关系

  23. 23

    根据条件将过滤器应用于数据框

  24. 24

    查询数据框,但仅将过滤器应用于列值不是NaN的行

  25. 25

    如何转换此数据框并将过滤器应用于单元格?

  26. 26

    如何将过滤器应用于具有多个“ AND”条件的DataView

  27. 27

    JPA如何将过滤器应用于EJB条件查询

  28. 28

    将过滤器应用于没有CSS的HTML5视频

  29. 29

    将过滤器应用于Scala Map时,如何检查已删除的条目?

热门标签

归档