Spark Strutured Streaming自动将时间戳转换为本地时间
我在UTC和ISO8601中使用了时间戳,但是使用结构化流,它会自动转换为本地时间。有没有办法阻止这种转换?我想在UTC中使用它。
我正在从Kafka中读取json数据,然后使用from_jsonSpark函数对其进行解析。
输入:
{"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_timestampSpark功能,但没有运气。
回答:
对我来说,它可以使用:
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
