gpt4 book ai didi

java - Spark Structured Streaming 自动将时间戳转换为本地时间

转载 作者:太空狗 更新时间:2023-10-29 22:37:03 26 4
gpt4 key购买 nike

我的时间戳是 UTC 和 ISO8601,但使用结构化流,它会自动转换为本地时间。有没有办法停止这种转换?我想在 UTC 中使用它。

我正在从 Kafka 读取 json 数据,然后使用 from_json Spark 函数解析它们。

输入:

{"Timestamp":"2015-01-01T00:00:06.222Z"}

流程:

SparkSession
.builder()
.master("local[*]")
.appName("my-app")
.getOrCreate()
.readStream()
.format("kafka")
... //some magic
.writeStream()
.format("console")
.start()
.awaitTermination();

架构:

StructType schema = DataTypes.createStructType(new StructField[] {
DataTypes.createStructField("Timestamp", DataTypes.TimestampType, true),});

输出:

+--------------------+
| Timestamp|
+--------------------+
|2015-01-01 01:00:...|
|2015-01-01 01:00:...|
+--------------------+

如您所见,小时已自行增加。

PS:我尝试使用 from_utc_timestamp Spark 函数进行试验,但没有成功。

最佳答案

对我来说,它可以使用:

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

它告诉 spark SQL 使用 UTC 作为时间戳的默认时区。例如,我在 spark SQL 中使用了它:

select *, cast('2017-01-01 10:10:10' as timestamp) from someTable

我知道它在 2.0.1 中不起作用。但适用于 Spark 2.2。我也在 SQLTransformer 中使用过并且它有效。

虽然我不确定流式传输。

关于java - Spark Structured Streaming 自动将时间戳转换为本地时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48767008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com