1

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

我的数据作为增量表存储在 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 行。这可能是 db-connect 将查询转换为集群的方式。

4

1 回答 1

1

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

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

spark.conf.set("spark.sql.session.timeZone", "UTC")
于 2022-02-17T09:11:10.340 回答