scala - Apache Spark 在 SQL 表达式中开始
问题描述
在 Apache Spark API 中,我可以使用startsWith
函数来测试列的值:
myDataFrame.filter(col("columnName").startsWith("PREFIX"))
是否可以在 Spark SQL 表达式中执行相同的操作,如果可以,您能否举个例子?
解决方案
使用 regexp_replace,您可以在没有 UDF 的情况下获得相同的结果。看一下这个
scala> val df=Seq(("bPREFIX",1),("PREFIXb",2)).toDF("a","b")
df: org.apache.spark.sql.DataFrame = [a: string, b: int]
scala> df.show
+-------+---+
| a| b|
+-------+---+
|bPREFIX| 1|
|PREFIXb| 2|
+-------+---+
scala> df.filter(regexp_replace('a,"""^PREFIX.*""","")==="").show
+-------+---+
| a| b|
+-------+---+
|PREFIXb| 2|
+-------+---+
scala>
或使用 regexp_extract()
scala> df.filter(regexp_extract('a,"""(^PREFIX)""",1)==="PREFIX").show
+-------+---+
| a| b|
+-------+---+
|PREFIXb| 2|
+-------+---+
scala>
使用 instr() 函数
scala> df.filter("instr(a,'PREFIX')=1").show
+-------+---+
| a| b|
+-------+---+
|PREFIXb| 2|
+-------+---+
scala>
推荐阅读
- php - Yii2模型排除相关记录
- c++ - 在 Windows 10 上使用 Visual Studio 2019 的 Boost 1.71.0 库出现错误
- angular - 我们如何在角度服务中使用 forwardRef 来避免循环依赖?
- mysql - 使用 LAG 获取每月进度百分比的难度
- php - Symfony 3.4 Uncaught Symfony\Component\Form\Exception\LogicException:渲染独立表单时未找到块“form_start”
- python - 在 Robot Framework 中捕获服务器日志
- python - 熊猫的布尔“意思”
- python - 在python中插入变量
- r - 如何从列表中的多个向量中选择多个元素
- python - 这个装饰器怎么写?