如何使用 python 一步創建具有時間戳資料型別的 Spark 資料幀?這是我分兩步完成的方法。使用火花 3.1.2
from pyspark.sql.functions import *
from pyspark.sql.types import *
schema_sdf = StructType([
StructField("ts", TimestampType(), True),
StructField("myColumn", LongType(), True),
])
sdf = spark.createDataFrame( ( [ ( to_timestamp(lit("2022-06-29 12:01:19.000")), 0 ) ] ), schema=schema_sdf )
uj5u.com熱心網友回復:
PySpark 不會自動解釋字串中的時間戳值。我主要使用以下語法來創建 df,然后將cast
列型別設定為時間戳:
from pyspark.sql import functions as F
sdf = spark.createDataFrame([("2022-06-29 12:01:19.000", 0 )], ["ts", "myColumn"])
sdf = sdf.withColumn("ts", F.col("ts").cast("timestamp"))
sdf.printSchema()
# root
# |-- ts: timestamp (nullable = true)
# |-- myColumn: long (nullable = true)
長格式是自動推斷的,但對于時間戳,我們需要一個cast
.
另一方面,即使沒有強制轉換,您也可以使用需要時間戳作為輸入的函式:
sdf = spark.createDataFrame([("2022-06-29 12:01:19.000", 0 )], ["ts", "myColumn"])
sdf.printSchema()
# root
# |-- ts: string (nullable = true)
# |-- myColumn: long (nullable = true)
sdf.selectExpr("extract(year from ts)").show()
# ---------------------
# |extract(year FROM ts)|
# ---------------------
# | 2022|
# ---------------------
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/497513.html
標籤:Python 阿帕奇火花 pyspark apache-spark-sql 时间戳