pyspark.sql.types模块中日期时间数据类型介绍
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应用程序中处理日期和时间数据。
