24 小时制 from_unixtime
24h clock with from_unixtime
我需要将带有 Unixtime/LongType
时间戳列的数据帧转换为实际的 TimestampType
。
- 1646732321 = 2022 年 8 月 10:38:41 GMT+1
- 1646768324 = 2022 年 3 月 8 日 20:38:44 GMT+1
但是,当我在数据帧上使用 from_unixtime
时,我得到一个 12 小时制的时钟,出于某种原因它基本上从我的第二个时间戳中减去 12 小时?我如何告诉 PySpark 使用 24 小时时钟?
下面代码的输出是:
+---+----------+-------------------+
|id |mytime |mytime_new |
+---+----------+-------------------+
|ABC|1646732321|2022-03-08 10:38:41|
|DFG|1646768324|2022-03-08 08:38:44|
+---+----------+-------------------+
第二行应该是2022-03-08 20:38:44
.
可重现的代码示例:
data = [
("ABC", 1646732321)
,
("DFG", 1646768324)
]
schema = StructType(
[
StructField("id", StringType(), True),
StructField("mytime", LongType(), True),
]
)
df = spark.createDataFrame(data, schema)
df = df.withColumn(
"mytime_new",
from_unixtime(df["mytime"], "yyyy-MM-dd hh:mm:ss"),
)
df.show(10, False)
3 分钟后发现我的错误...问题是我的 timestamp-format 小时字符串 (hh
):
而不是:
from_unixtime(df["mytime"], "yyyy-MM-dd hh:mm:ss"),
我需要:
from_unixtime(df["mytime"], "yyyy-MM-dd HH:mm:ss"),
我需要将带有 Unixtime/LongType
时间戳列的数据帧转换为实际的 TimestampType
。
- 1646732321 = 2022 年 8 月 10:38:41 GMT+1
- 1646768324 = 2022 年 3 月 8 日 20:38:44 GMT+1
但是,当我在数据帧上使用 from_unixtime
时,我得到一个 12 小时制的时钟,出于某种原因它基本上从我的第二个时间戳中减去 12 小时?我如何告诉 PySpark 使用 24 小时时钟?
下面代码的输出是:
+---+----------+-------------------+
|id |mytime |mytime_new |
+---+----------+-------------------+
|ABC|1646732321|2022-03-08 10:38:41|
|DFG|1646768324|2022-03-08 08:38:44|
+---+----------+-------------------+
第二行应该是2022-03-08 20:38:44
.
可重现的代码示例:
data = [
("ABC", 1646732321)
,
("DFG", 1646768324)
]
schema = StructType(
[
StructField("id", StringType(), True),
StructField("mytime", LongType(), True),
]
)
df = spark.createDataFrame(data, schema)
df = df.withColumn(
"mytime_new",
from_unixtime(df["mytime"], "yyyy-MM-dd hh:mm:ss"),
)
df.show(10, False)
3 分钟后发现我的错误...问题是我的 timestamp-format 小时字符串 (hh
):
而不是:
from_unixtime(df["mytime"], "yyyy-MM-dd hh:mm:ss"),
我需要:
from_unixtime(df["mytime"], "yyyy-MM-dd HH:mm:ss"),