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

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可以方便地处理日期和时间相关的数据。