PySpark DataFrame 不断将时间列转换为时间戳

PySpark DataFrame keeps converting time column to timestamp

我正在阅读来自 PostgreSQL 的 table。 table 包含列 elap_time,其 datatypetime。但是当读入 spark DataFrame 时,它会自动将其转换为 timestamp。如何避免这种情况。

config = {"fs.gs.impl": "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem",
           "fs.AbstractFileSystem.gs.impl": "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS"
           }

conf = spark.sparkContext._jsc.hadoopConfiguration()
for (name, value) in config.items():
      conf.set(name, value)

source = {
        "url": url,
        'user': user,
        'database': db,
        'password': pass,
        'port': '5432',
        'driver': 'org.postgresql.Driver',
        'dbtable': 'newtable'
    }
spark.read.format("JDBC").options(**source).load()
df.printSchema()

这是输出:

#|-- elap_time: timestamp (nullable = true)

这是数据库中的实际数据

+-------------------+                                                           
|         elap_time |
+-------------------+
|08:02:19           |
|08:02:19           |
+-------------------+

这是spark数据帧的输出

+-------------------+                                                           
|          elap_time|
+-------------------+
|1970-01-01 08:02:19|
|1970-01-01 08:02:19|
+-------------------+

根据用户 DKNY 在评论部分的建议。 “您的数据框已创建,使用 withColumn 添加一个新列,然后将原始时间解析为 date_format(to_timestamp(), "HH:mm:ss")。您可以将原始列替换为新创建的列。我知道这是一种解决方法,但我现在想不出任何替代解决方案。"

from pyspark.sql.functions import date_format

df = df.withColumn('date', date_format('date', 'HH:mm:ss'))
df.show()