DB Connect 和工作区笔记本 returns 个不同的结果

DB Connect and workspace notebooks returns different results

我正在使用 DB Connect 9.1.9。 我的集群版本是单节点9.1LTS(测试用)。

我的数据作为增量存储在 S3 上 table。

运行 以下:

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 Workspace 上 运行 时:462.

当然你不能检查那个数字,我只是想找出为什么我们有差异。

如果我在 运行 日期删除条件,我在两个平台上都有很好的结果。 所以我推断这是“运行Date”的错误,但我找不到原因。

架构:

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

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

我是否遗漏了有关时间戳用法的信息?

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

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

在您的 spark 会话声明之后添加此内容(如果您的日期存储在 UTC 中):

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