簡體   English   中英

Pyspark 創建時間戳列

[英]Pyspark Creating timestamp column

我正在使用火花 2.1.0。 我無法在 pyspark 中創建時間戳列我正在使用下面的代碼片段。 請幫忙

df=df.withColumn('Age',lit(datetime.now()))

我得到

斷言錯誤:col 應該是 Column

請幫忙

我不確定 2.1.0,至少在 2.2.1 上你可以:

from pyspark.sql import functions as F
df.withColumn('Age', F.current_timestamp())

希望有幫助!

假設您的代碼片段中有數據框,並且您希望所有行都有相同的時間戳。

讓我創建一些虛擬數據框。

>>> dict = [{'name': 'Alice', 'age': 1},{'name': 'Again', 'age': 2}]
>>> df = spark.createDataFrame(dict)

>>> import time
>>> import datetime
>>> timestamp = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
>>> type(timestamp)
<class 'str'>

>>> from pyspark.sql.functions import lit,unix_timestamp
>>> timestamp
'2017-08-02 16:16:14'
>>> new_df = df.withColumn('time',unix_timestamp(lit(timestamp),'yyyy-MM-dd HH:mm:ss').cast("timestamp"))
>>> new_df.show(truncate = False)
+---+-----+---------------------+
|age|name |time                 |
+---+-----+---------------------+
|1  |Alice|2017-08-02 16:16:14.0|
|2  |Again|2017-08-02 16:16:14.0|
+---+-----+---------------------+

>>> new_df.printSchema()
root
 |-- age: long (nullable = true)
 |-- name: string (nullable = true)
 |-- time: timestamp (nullable = true)

添加到巴拉萊卡,如果有人,像我一樣只想添加日期,而不是時間,那么他可以按照下面的代碼

from pyspark.sql import functions as F
df.withColumn('Age', F.current_date())

希望這有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM