Spark Strutured Streaming自动将时间戳转换为本地时间
我在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
也用了,它起作用了。
我不确定流。
以上是 Spark Strutured Streaming自动将时间戳转换为本地时间 的全部内容, 来源链接: utcz.com/qa/411737.html