):

я есть метка времени в UTC и ISO8601, но при использовании структурированной потоковой передачи она автоматически конвертируется в местное время. Есть ли способ остановить это преобразование? Я хотел бы иметь это в UTC.

Я читаю данные JSON от Кафки, а затем анализирую их, используяfrom_json Искровая функция.

Входные данные:

{"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 Функция искры, но не повезло.

Ответы на вопрос(2)

Ваш ответ на вопрос