DB Connect和工作区笔记本返回不同的结果



我使用的是DB Connect 9.1.9。我的集群版本是9.1LTS,只有一个节点(用于测试目的(。

我的数据以delta表的形式存储在S3上。

运行以下内容:

df = spark.sql("select * from <table_name> where runDate >= '2022-01-10 14:00:00' and runDate <= '2022-01-10 15:00:00'")

当我用DB Connect运行它时,我得到:31。当我在Databricks工作区上运行它时:462。

当然,你不能检查这些数字,我只是想知道为什么我们有差异。

如果我删除runDate上的条件,我在两个平台上都有很好的结果。所以我推断这是";runDate"错了,但我找不到原因。

模式:

StructType(List(StructField(id,StringType,False), 
StructField(runDate,TimestampType,true)))

我在两个平台上也有相同的解释计划。

我错过了时间戳的使用吗?

更新1:有趣的是,当我把count((直接放在spark.sql("SELECT count(*) ...")中时,我仍然有31行。这可能是数据库连接将查询转换到集群的方式。

问题在于与Spark会话关联的时区。

将此添加到您的火花会话声明后(如果您的日期存储在UTC(:

spark.conf.set("spark.sql.session.timeZone", "UTC")

最新更新