![](/img/trans.png)
[英]Setting the column value based on the column value of complete df in spark scala
[英]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.