pyspark.sql.types模块中时间戳数据类型介绍
发布时间:2024-01-05 20:03:28
pyspark.sql.types模块中时间戳数据类型是TimestampType,该类型用于表示日期和时间。TimestampType表示自UNIX纪元(1970年1月1日00:00:00 GMT)以来的精确时间点,精确到毫秒。以下是该数据类型的介绍,并附带一些使用例子。
1. 创建时间戳数据类型:
使用TimestampType()创建一个时间戳数据类型的实例,如下所示:
from pyspark.sql.types import TimestampType timestamp_type = TimestampType()
2. 时间戳数据类型的特性:
时间戳数据类型具有以下特性:
- 时间戳数据类型的大小是8字节。
- 时间戳数据类型表示的是格林尼治标准时间(GMT)。
- 时间戳数据类型是不可变类型,一旦创建,其值不能更改。
3. 通过DataFrame创建时间戳列:
可以使用DataFrame的withColumn()方法来创建一个时间戳列。下面是一个例子:
from pyspark.sql import SparkSession
from pyspark.sql.types import TimestampType
spark = SparkSession.builder.getOrCreate()
# 创建一个DataFrame
data = [("Alice", "2021-01-01 10:00:00"),
("Bob", "2022-02-02 12:30:00")]
df = spark.createDataFrame(data, ["Name", "Timestamp"])
# 将字符串列转换为时间戳列
df = df.withColumn("Timestamp", df["Timestamp"].cast(TimestampType()))
df.show()
输出:
+-----+-------------------+ | Name| Timestamp| +-----+-------------------+ |Alice|2021-01-01 10:00:00| | Bob|2022-02-02 12:30:00| +-----+-------------------+
4. 通过SQL查询创建时间戳列:
除了使用DataFrame的withColumn()方法外,还可以使用SQL查询来创建时间戳列。下面是一个例子:
from pyspark.sql import SparkSession
from pyspark.sql.types import TimestampType
spark = SparkSession.builder.getOrCreate()
# 创建一个DataFrame
data = [("Alice", "2021-01-01 10:00:00"),
("Bob", "2022-02-02 12:30:00")]
df = spark.createDataFrame(data, ["Name", "Timestamp"])
# 注册DataFrame为一个临时表
df.createOrReplaceTempView("table")
# 使用SQL查询将字符串列转换为时间戳列
df = spark.sql("SELECT Name, CAST(Timestamp AS TIMESTAMP) AS Timestamp FROM table")
df.show()
输出:
+-----+-------------------+ | Name| Timestamp| +-----+-------------------+ |Alice|2021-01-01 10:00:00| | Bob|2022-02-02 12:30:00| +-----+-------------------+
以上是pyspark.sql.types模块中时间戳数据类型的介绍和使用例子。使用TimestampType可以方便地处理日期和时间相关的数据。
