pyspark系列-字串轉時間格式 string to datetime or timestamp

How to convert pyspark string to datetime?

在本範例你會學到:

  • to_date 使用方式 (New in version 2.2)
  • unix_timestamp 使用方式

在本範例你需要先準備好:

  • 本範例環境是 pyspark 版本 >= 2.4
  • 歡樂愉快的學習精神

1.Create Dataframe

建立一個簡單的水果清單以及進貨日期,一開始日期是 string

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from pyspark import SparkConf, SparkContext
from pyspark.sql import SparkSession
import pyspark.sql.functions as F
from pyspark.sql.types import *

spark = SparkSession.builder.appName('date_process').getOrCreate()

# Create dataset
df = spark.createDataFrame([("bell fruit", "apple", "2020/05/26"), \
                                ("bell fruit", "banana", "2020/05/27"), \
                                ("banana", "apple", "2020/05/28"), \
                                ], ["fruit_1", "fruit_2", "date"])

創建資料

2.轉換 date 格式

非常簡單的方法,使用 to_date,前面的 F 是在前面 import 時取的新名稱 import pyspark.sql.functions as F,後面的 yyyy/MM/dd 格式為原始字串的格式,如果原始字串是 2020-05-27 就要改成 yyyy-MM-dd

要注意的是這個方法是在 spark 2.2 版本 中才新增的喔!!

df_todate = df.withColumn("date", F.to_date(F.col("date"), 'yyyy/MM/dd'))

執行後就會看到資料的格式已經從 string 轉成 date 型態了!

字串格式變成 date

3.轉換 timestamp 格式

這裡也相當的簡單,如果需要將時間格式轉成 timestamp,只要使用 unix_timestamp 就可以了,跟上面的 F.to_date 使用方法是一模一樣的喔!

df_timestamp = df.withColumn('timestamp',F.unix_timestamp(F.col('date'),'yy/MM/dd'))

可以看到新增了一個 timestamp 欄位,型態為 int

字串格式變成 timestamp

參考資料

若有任何問題與指教歡迎與我聯繫,若覺得我的內容不錯麻煩幫我隨便點個廣告,謝謝。

pyspark.sql.functions 其實有許多好用的小 function 可以直接使用,也不用再自己辛苦的寫 udf(User Defined function),在之後的介紹會再慢慢帶給大家。下方為今天介紹的兩種好用的小function。

https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.functions.to_date

https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.functions.unix_timestamp


 上一篇
pyspark系列-如何於 dataframe 增加索引(index)值或 row number pyspark系列-如何於 dataframe 增加索引(index)值或 row number
How to add a index number column in pyspark dataframe?在本範例你會學到: 常見的 function monotonically_increasing_id () 本範例重點 row_n
2020-06-04
下一篇 
GCP Cloud DNS & letsencrypt 的 ssl 憑證申請與續期 GCP Cloud DNS & letsencrypt 的 ssl 憑證申請與續期
Auto renew letsencrypt by certbot in GCP.在本範例你會學到: 手動更新 letsencrypt 的 ssl 憑證 (有使用Cloud DNS) 自動更新 letsencrypt 的 ssl 憑證 (
2020-05-25
  目錄