mysql - 如何在mysql之上的spark中查询字符串时间
问题描述
我有一个mysql表如下
id , score , score_time ( type text)
1, 10, Mon, 25 Oct 2021 15:26:25 GMT
2, 25, Mon, 25 Oct 2021 15:26:25 GMT
3, 12, Mon, 25 Oct 2021 15:26:25 GMT
火花代码是:
val stbl = spark.read.format("jdbc").option("url", s"jdbc:mysql://$sqlCluster")
.option("driver", "com.mysql.jdbc.Driver")
.option("user", username).option("password", password)
.load()
stbl.createOrReplaceTempView(MAPPING_TABLE)
现在我需要查询 score_time > 特定日期字符串的所有数据
val qdt = "2021-10-30"
val sqlQuery =
s"""
|select id,
| score
|from ${MAPPING_TABLE}
| where STR_TO_DATE(MID(score_time,6,11),'%d %b %Y') > '${qdt}'
|limit 10;
|""".stripMargin
spark.sql(sqlQuery).as[ScoreData].show()
在 MySQL 工具中,此查询正在运行,但在 spark 中,它失败并出现以下错误
org.apache.spark.sql.AnalysisException: Undefined function: 'STR_TO_DATE'. This function is neither a registered temporary function nor a permanent function registered in the database 'default'.; line 6 pos 7
运行此类查询的正确方法是什么?