scala - Scala:根据预定义数组 Spark 1.6 中存在的列值过滤 DF 行
问题描述
我的问题与这篇文章几乎相似
我有一个数据框,我需要过滤掉其列值不是预定义数组中的子字符串的行。
例如: 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中的任何建议或想法?
解决方案
通过使用from List.rlike
创建一个字符串来使用函数。|
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|
+--------+-----------+
*/
推荐阅读
- asp.net-core - 无法通过 http 获取 steeltoe 健康执行器端点
- android - 模型如何将数据更改传达给android mvvm中的视图模型?
- phpmailer - 使用 PHPMailer 发送邮件的问题
- ios - 来自外部源的 iframe 内容未加载到 iOS 上的本地 HTML 文件中
- c# - 如何验证 AdaptiveCard 输入控件?
- mongodb - 如何插入新对象而不删除前一个对象
- reporting-services - Reportbuilder中的RDLC文件?
- extjs - extjs 6.2 根据 ajax 响应数据在表格单元格中呈现 html
- c# - 如何在 C# 中为 datagridview 创建“刷新”按钮?
- javascript - 使用 React JS 和 Laravel 处理多张图片上传