欢迎访问宙启技术站
智能推送

pyspark.sql.types模块中日期时间数据类型介绍

发布时间:2024-01-05 19:55:45

pyspark.sql.types模块中提供了多种日期时间数据类型,用于在Spark应用程序中处理日期和时间相关数据。下面是pyspark.sql.types模块中常用的日期时间数据类型的介绍,并附带使用例子。

1. DateType:DateType用于表示日期,格式为yyyy-MM-dd。可以使用datetime.datetime.strptime方法将字符串转换为日期对象,并使用DataFrame中的to_date函数将字符串列转换为日期列。

例子:

from pyspark.sql import SparkSession
from pyspark.sql import functions as F
from pyspark.sql.types import DateType
import datetime

spark = SparkSession.builder.getOrCreate()

df = spark.createDataFrame([['2021-01-01'], ['2022-01-01']], ['date_string'])
df = df.withColumn('date', F.to_date(F.col('date_string'), 'yyyy-MM-dd').cast(DateType()))
df.show()

输出:

+------------+----------+
|date_string |date      |
+------------+----------+
|2021-01-01  |2021-01-01|
|2022-01-01  |2022-01-01|
+------------+----------+

2. TimestampType:TimestampType用于表示时间戳,包含日期和时间信息。可以使用pyspark.sql.functions中的to_timestamp函数将字符串转换为时间戳,并使用DataFrame中的to_timestamp函数将字符串列转换为时间戳列。

例子:
python

from pyspark.sql.types import TimestampType

df = spark.createDataFrame([['2021-01-01 12:00:00'], ['2022-01-01 12:00:00']], ['timestamp_string'])

df = df.withColumn('timestamp', F.to_timestamp(F.col('timestamp_string'), 'yyyy-MM-dd HH:mm:ss').cast(TimestampType()))

df.show()

输出:

+-------------------+-------------------+

|timestamp_string |timestamp |

+-------------------+-------------------+

|2021-01-01 12:00:00|2021-01-01 12:00:00|

|2022-01-01 12:00:00|2022-01-01 12:00:00|

+-------------------+-------------------+

3. LongType:LongType用于表示从“1970-01-01 00:00:00”开始的秒数。可以使用datetime.datetime.timestamp方法将datetime对象转换为秒数,并使用DataFrame中的unix_timestamp函数将字符串列转换为秒数列。

例子:

from pyspark.sql.types import LongType

df = spark.createDataFrame([['2021-01-01 12:00:00'], ['2022-01-01 12:00:00']], ['timestamp_string'])
df = df.withColumn('timestamp_seconds', F.unix_timestamp(F.col('timestamp_string'), 'yyyy-MM-dd HH:mm:ss').cast(LongType()))
df.show()

输出:

+-------------------+------------------+
|timestamp_string   |timestamp_seconds |
+-------------------+------------------+
|2021-01-01 12:00:00|1609502400        |
|2022-01-01 12:00:00|1641048000        |
+-------------------+------------------+

4. StringType:StringType用于表示日期和时间相关的字符串。可以直接在DataFrame中使用字符串列。

例子:
python

df = spark.createDataFrame([['2021-01-01'], ['2022-01-01']], ['date'])

df.show()

输出:

+----------+

|date |

+----------+

|2021-01-01|

|2022-01-01|

+----------+

`

以上是pyspark.sql.types模块中日期时间数据类型的介绍和使用例子。有了这些数据类型,我们可以方便地在Spark应用程序中处理日期和时间数据。