У меня есть метка времени в UTC и ISO8601, но с использованием Structured Streaming она автоматически преобразуется в локальное время. Есть ли способ остановить это преобразование? Я хотел бы иметь его в UTC.
Я читаю данные json от Kafka, а затем разбираю их с помощью функции 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, но не повезло.