由于pyspark时间戳,将sparkDataframe保存到azure synapse时出现问题

r1wp621o  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(260)

我正在尝试将Dataframe保存到azure synapse表中,出现以下错误:
com.microsoft.sqlserver.jdbc.sqlserverexception:107096;从bcp客户端收到的列长度对于colid无效。。。
问题在于我的Dataframe中的timestamp列如下所示: 2011-01-27T06:48:04.000+0000 . 然而synapse中的目标列是datatime2类型,maxlenght8。
我已经试过了

.withColumn("myTimestampColumn", to_timestamp(col("myTimestampColumn"), "yyyy-MM-dd HH:mm:ss"))

但形式不会改变。
有人知道怎么避开这个吗?
注意以下几点:
synapse只接受dataframe列为timestamp的事务,目标列为datetime2
我正在使用spark 2.4.5

pftdvrlh

pftdvrlh1#

如果spark中的datetime列具有标准格式(如 2011-01-27T06:48:04.000+0000 ),您可以直接转换为时间戳,这将产生一种格式 yyyy-MM-dd HH:mm:ss .

df2 = df.withColumn("myTimestampColumn", col("myTimestampColumn").cast("timestamp"))

那你就可以省钱了 df2 到你的table上去。

相关问题