У меня есть набор данных, где 1 столбец - это long
, который представляет миллисекунды. Я хочу получить метку времени (yyyy-MM-dd HH:mm:ss
), которую представляет это число в UT C. По сути, я хочу использовать то же поведение, что и https://currentmillis.com/

У меня вопрос, есть ли способ конвертировать код Spark? поле длиной в миллисекунды до метки времени в UT C? Все, что мне удалось получить с помощью встроенного кода Spark, - это преобразование этого длинного в мое местное время (EST):
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql import types as T
from pyspark.sql import functions as F
sc = SparkContext()
spark = SQLContext(sc)
df = spark.read.json(sc.parallelize([{'millis':1582749601000}]))
df.withColumn('as_date', F.from_unixtime((F.col('millis')/1000))).show()
+-------------+-------------------+
| millis| as_date|
+-------------+-------------------+
|1582749601000|2020-02-26 15:40:01|
+-------------+-------------------+
Я смог преобразовать в UT C, форсировав часовой пояс всей сессии Spark. Я бы хотел этого избежать, потому что неправильно менять весь часовой пояс сеанса Spark для конкретного c варианта использования в этом задании.
spark.sparkSession.builder.master('local[1]').config("spark.sql.session.timeZone", "UTC").getOrCreate()
Я также хотел бы избежать пользовательского определенные функции, которые я хочу развернуть в Scala и Python, без написания кода c для каждого языка.