我什至不知道從哪里開始。我想將當前是字串的列決議為時間戳。記錄如下所示:
Thu, 28 Jan 2021 02:54:17 0000
將其決議為時間戳的最佳方法是什么?我什至不知道從哪里開始,因為這不是一種非常常見的存盤日期的方式
uj5u.com熱心網友回復:
您可能可以從檔案Datetime Patterns for Formatting and Parsing 開始:
import pyspark.sql.functions as F
df = spark.createDataFrame([("Thu, 28 Jan 2021 02:54:17 0000",)], ['timestamp'])
df.withColumn(
"timestamp",
F.to_timestamp("timestamp", "E, dd MMM yyyy HH:mm:ss Z")
).show()
# -------------------
#| timestamp|
# -------------------
#|2021-01-28 02:54:17|
# -------------------
但是,從 Spark 3.0 版開始,您不能再使用一些符號,例如E決議時間戳時:
'E'、'F'、'q' 和 'Q' 符號只能用于日期時間格式,例如
date_format. 它們不允許用于日期時間決議,例如to_timestamp.
您可以將時間決議器設定為舊版:
spark.conf.set("spark.sql.legacy.timeParserPolicy", "LEGACY")
或者在使用之前使用一些字串函式從字串中洗掉日期部分to_timestamp:
df.withColumn(
"timestamp",
F.to_timestamp(F.split("timestamp", ",")[1], " dd MMM yyyy HH:mm:ss Z")
).show()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/405138.html
標籤:
上一篇:在列中按相似名稱對行進行分組
