簡體   English   中英

Scala:根據預定義數組 Spark 1.6 中存在的列值過濾 DF 行

[英]Scala : Filter DF rows based upon column value which exists in a predefined Array Spark 1.6

我的問題與這篇文章幾乎相似

我有一個數據框,我需要過濾掉預定義數組中列值不是 substring 的行。

例如:List = ["apple", "grapes", "melon"]

+--------+-----------+
|quantity|      fruit|
+--------+-----------+
|      12|      apple|
|      24|green apple|
|       6|     grapes|
|      11|      mango|
|      12| watermelon|
|      15|  muskmelon|
|      22|    berries|
+--------+-----------+

使用數組過濾后,我的 df 應該如下所示:

+--------+-----------+
|quantity|      fruit|
+--------+-----------+
|      12|      apple|
|      24|green apple|
|       6|     grapes|
|      12| watermelon|
|      15|  muskmelon|
+--------+-----------+

列值“mango”和“berries”的行應該被過濾掉,因為預定義列表中不存在子字符串。

spark 1.6中的任何建議或想法?

使用.rlike function 通過創建字符串| 從列表。

Example:

df.show()
/*
+--------+-----------+
|quantity|      fruit|
+--------+-----------+
|      12|      apple|
|      24|green apple|
|       6|     grapes|
|      11|      mango|
|      12| watermelon|
|      15|  muskmelon|
|      22|    berries|
+--------+-----------+
*/

import org.apache.spark.sql.functions._

val list=Seq("apple" , "grapes" , "melon").mkString("|")
//list: String = apple|grapes|melon

df.filter(col("fruit").rlike(list)).show()
/*
+--------+-----------+
|quantity|      fruit|
+--------+-----------+
|      12|      apple|
|      24|green apple|
|       6|     grapes|
|      12| watermelon|
|      15|  muskmelon|
+--------+-----------+
*/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM