scala - 使用列值列表收集多个 RDD - Spark
问题描述
我有一个 RDD 和一个值列表。如何根据值列表过滤它们并将它们收集为单独的 RDD?
例如:
val rdd = sc.parallelize(Seq((4, "blah", 2), (2, "", 3), (56, "foo", 3), (100, null, 5)))
如何传递值列表以收集列表中所有过滤的 RDD?例如,对于列表:
val l = List(2,3)
干杯!
解决方案
在大多数情况下,使用单个数据框而不是数据框列表更容易。要使用值列表过滤数据框,请使用isin
Gaurang Shah 的答案。
但是,如果您真的想要一个可能的数据框列表。只需map
在列表中过滤每个步骤中的数据框,如下所示:
val dfs = l.map(x => df.filter($"C" === x))
dfs
这里将List[DataFrame]
如愿以偿。
对于 RDD:
如果您使用 a RDD
,唯一需要更改的是过滤器操作:
val rdds = l.map(x => rdd.filter(c => c._3 === x))
rdds
将是一个List[RDD]
.
推荐阅读
- python - 将 django 数据库从本地机器恢复到服务器的防弹方法是什么?
- phpmyadmin - phpmyadmin 4.8.5 导出页面为空白
- java - 不同OS环境下对JUnit测试的不同期望
- html - 有什么办法可以把我的手风琴固定成角度?
- javascript - 具有特定参数的角度路由匹配 url
- facebook - ActionType 的对象 id.Send Facebook Graph API
- sql - 在Sql中,对于高级经理,如果员工也是经理,则将其经理更新为员工姓名
- django - Django drf simple-jwt authentication“detail”:“没有找到具有给定凭据的活动帐户”
- query-builder - JQuery QueryBuilder 中的子查询
- javascript - 通过 JS 操作 SVG