【发布时间】:2021-05-22 01:48:29
【问题描述】:
我正在尝试将 Dataframe 保存到 Azure Synapse 表中,但出现以下错误:
com.microsoft.sqlserver.jdbc.SQLServerException: 107096;从 bcp 客户端为 colid 接收到无效的列长度...
问题在于我的数据框中的时间戳列,如下所示:2011-01-27T06:48:04.000+0000。但是 Synapse 中的目标列是 datatime2 类型,最大长度为 8。
我尝试过的是
.withColumn("myTimestampColumn", to_timestamp(col("myTimestampColumn"), "yyyy-MM-dd HH:mm:ss"))
但格式不会改变。
有谁知道如何解决这个问题?
需要注意的几点:
- Synapse 只会在数据框列是时间戳的情况下接受交易,目标列是 datetime2
- 我正在使用 spark 2.4.5
【问题讨论】:
-
“格式不会改变”是什么意思?你能做一个
df.show()并在withColumn之前和之后发布输出吗?从代码的角度来看,为强制转换的列使用不同的别名而不是重用相同的名称也会更简洁。
标签: apache-spark pyspark databricks azure-synapse