Postgresql 包含纳秒时间戳的Spark read csv

Postgresql 包含纳秒时间戳的Spark read csv,postgresql,csv,apache-spark,pyspark,Postgresql,Csv,Apache Spark,Pyspark,我正在使用输出到CSV的copy命令转储Postgres表 CSV包含格式如下的时间戳:2011-01-01 12:30:10.123456+00 我在读CSV df = spark.read.csv( "s3://path/to/csv", inferSchema=True, timestampFormat="yyyy-MM-dd HH:mm:ss.SSSSSSX", ... ) 但这不起作用(正如预期的那样)。时间戳格式使用java.text.simpl

我正在使用输出到CSV的copy命令转储Postgres表

CSV包含格式如下的时间戳:
2011-01-01 12:30:10.123456+00

我在读CSV


df = spark.read.csv(
    "s3://path/to/csv",
    inferSchema=True,
    timestampFormat="yyyy-MM-dd HH:mm:ss.SSSSSSX",
    ...
)

但这不起作用(正如预期的那样)。时间戳格式使用
java.text.simpleDataFormat
,它不支持纳秒

我尝试了很多时间戳格式的变体,它们都会生成字符串列或时间戳格式错误。似乎纳秒溢出了秒,给我的时间戳增加了时间

我不能将模式应用于CSV,因为我并不总是知道它,也不能强制转换列,因为我不总是知道哪些列将是时间戳。我也不能在退出Postgres的过程中投射时间戳,因为我只是在做
select*…

如何解决这个问题,以便使用正确的时间戳格式接收CSV

我的第一个想法是我必须修改
时间戳格式
,这似乎是不可能的?我的第二个想法是使用
sed
在我从Postgres转储时截断时间戳

我用的是spark 2.3.1


谢谢你的帮助

如果你用一个例子创建了一个假数据框,回答它可能会更容易如果你用一个例子创建了一个假数据框,回答它可能会更容易