无法比较Spark SQL查询中的日期



使用pyspark和JDBC驱动程序对MySQL我无法查询类型日期的列。java.lang.classcastException被抛出。

sqlContext = SQLContext(sc)
df = sqlContext.load(source="jdbc", url=url, dbtable="reports")
sqlContext.registerDataFrameAsTable(df, "reports")
df.printSchema()
# root
#  |-- id: integer (nullable = false)
#  |-- day: date (nullable = false)
query = sqlContext.sql("select * from reports where day > '2015-05-01'")
query.collect() # ... most recent failure: ... java.lang.ClassCastException

将日列的类型更改为时间戳解决了问题,但是我必须保留原始架构。

查看火花源中相关的单元测试,看起来您需要明确的铸造:

select * from reports where day > cast('2015-05-01' as date)

在Spark SQL文档中没有它的迹象,但是它似乎已在Transact-SQL和Hive中使用了一段时间。

相关内容

  • 没有找到相关文章

最新更新