我尝试使用startsWith
使用数据集api进行简单的字符串过滤,但我无法使下面的语句起作用。我可以像这样使用contains
。不知道我在这里失踪了什么。
ds.filter(_.colToFilter.toString.contains("0")).show(false)
但这只会产生一个空的数据集,但我知道字符串在值中。
ds.filter(_.colToFilter.toString.startsWith("0")).show(false)
答案 0 :(得分:1)
您可以使用subString
内置功能作为
import org.apache.spark.sql.functions._
df.filter(substring(col("column_name-to-be_used"), 0, 1) === "0")
from pyspark.sql import functions as f
df.filter(f.substring(f.col("column_name-to-be_used"), 0, 1) == "0")
所以你可以子串到你要在入口处检查的字符数
答案 1 :(得分:1)
尝试以下方法:
val d = ds.filter($"columnToFilter".contains("0"))
或
val d = ds.filter($"columnToFilter".startsWith("0"))
示例强>
+----+-------+
| age| name|
+----+-------+
|null|Michael|
| 30| Andy|
| 19| Justin|
+----+-------+
假设我们有上述dataset
,输出将为:
> var d = ds.filter($"name".contains("n"))
+---+------+
|age| name|
+---+------+
| 30| Andy|
| 19|Justin|
+---+------+
> var d = ds.filter($"name".startsWith("A"))
+---+----+
|age|name|
+---+----+
| 30|Andy|
+---+----+