我正在尝试使用类似于Dataframe中isin
的列表中的元素来过滤arraybuffer。
val booksDF: DataFrame = ...
val Books_Category = List("A","B","C")
val action_books = booksDF.filter($"bk_category_cd" isin (Books_Category: _*))
如何在RDD上使用集合应用相同的过滤器?
答案 0 :(得分:3)
在RDD中,您可以使用contains
方法将列表发送到filter
。
假设你有dataframe
喜欢
+-----+
|books|
+-----+
|A |
|D |
|B |
+-----+
并列为
val Books_Category = List("A","B","C")
您可以在contains
中使用rdd
作为
val filteredRDD = df.rdd.filter(x=>Books_Category.contains(x(0)))
filteredRDD.foreach(println)
这应该是结果
[A]
[B]
在RDD
中执行相同的操作也是相同的
假设我们有RDD
和list
到filter
val rdd = sc.parallelize(Seq("A", "D", "B", "E", "F"))
val list = List("A","B","C")
然后像我们上面那样做
val filteredRDD = rdd.filter(x => list.contains(x))
filteredRDD.foreach(println)
会导致
A
B