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")
我正在使用 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")