apache-spark - 如何将参数传递给 spark.sql(""" """)?
问题描述
我想将一个字符串传递给 spark.sql
这是我的查询
mydf = spark.sql("SELECT * FROM MYTABLE WHERE TIMESTAMP BETWEEN '2020-04-01' AND '2020-04-08')
我想为日期传递一个字符串。
我试过这段代码
val = '2020-04-08'
s"spark.sql("SELECT * FROM MYTABLE WHERE TIMESTAMP BETWEEN $val AND '2020-04-08'
解决方案
尝试使用 Python 字符串格式,{}
并在 scala 中使用。.format(val)
$val
val = '2020-04-08'
spark.sql("SELECT * FROM MYTABLE WHERE TIMESTAMP BETWEEN {} AND '2020-04-08'".format(val)).show()
Example:
In Pyspark:
spark.sql("select * from tmp").show()
#+----+---+
#|name| id|
#+----+---+
#| a| 1|
#| b| 2|
#+----+---+
id='1'
spark.sql("select * from tmp where id={}".format(id)).show()
#+----+---+
#|name| id|
#+----+---+
#| a| 1|
#+----+---+
In Scala:
用于string interpolation
替换变量的值
val id=1
spark.sql(s"select * from tmp where id=$id").show()
//+----+---+
//|name| id|
//+----+---+
//| a| 1|
//+----+---+
推荐阅读
- c# - 如何覆盖创建为密封类的默认属性错误消息
- office-js - Office-Add-in-Microsoft-Graph-React Sample example - first try - login is already in progress
- nunit - [Retry] 和 [Repeat] 属性如何在 NUnit 中交互
- android - Google Nearby Connection:文件交换不会传输整个文件
- unity3d - 不太明白四元数旋转(欧拉角)
- r - 使用 dplyr 在特定列值的第一个实例之后过滤 R 中数据框中的行
- assembly - 我怎样才能画出一个直立的星号三角形?
- c# - 如何检测用户何时从 Visual Studio 运行或何时是常规运行服务
- ubuntu - pandoc:如何设置几何驱动程序
- html - 悬停时如何重置/控制转换延迟?