我在 Azure synapse 中有一个数据库,其中只有一列数据类型为 datetime2(7)。 在 Azure Databricks 中,我有一个具有以下架构的表。
df.schema
StructType(List(StructField(dates_tst,TimestampType,true)))
当我尝试在 Synapse 上保存时,收到错误消息
Py4JJavaError: An error occurred while calling o535.save.: org.apache.spark.SparkException: Job aborted due to stage failure: Task 3 in stage 15.0 failed 4 times, most recent failure: Lost task 3.3 in stage 15.0 (TID 46) (10.139.64.5 executor 0): com.microsoft.sqlserver.jdbc.SQLServerException: 110802;An internal DMS error occurred that caused this operation to fail
SqlNativeBufferBufferBulkCopy.WriteTdsDataToServer, error in OdbcDone: SqlState: 42000, NativeError: 4816, 'Error calling: bcp_done(this->GetHdbc()) | SQL Error Info: SrvrMsgState: 1, SrvrSeverity: 16, Error <1>: ErrorMsg: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid column type from bcp client for colid 1. | Error calling: pConn->Done() | state: FFFF, number: 75205, active connections: 35', Connection String: Driver={pdwodbc17e};app=TypeD00-DmsNativeWriter:DB2\mpdwsvc (56768)-ODBC;autotranslate=no;trusted_connection=yes;server=\\.\pipe\DB.2-e2f5d1c1f0ba-0\sql\query;database=Distribution_24
编辑:运行时版本 9.1 LTS(包括 Apache Spark 3.1.2、Scala 2.12)
编辑2: 可以解决,错误是:
- 在写入选项中使用了不正确的格式,我使用的是“com.microsoft.sqlserver.jdbc.spark”并将其更改为“com.databricks.spark.sqldw”。
- 范围凭据也存在错误
最佳答案
org.apache.spark.SparkException: Job aborted due to stage failure
通常,当您对存在空值的列执行操作时,会出现上述错误。
将空值替换为有效的日期时间值。
另请检查 Spark 版本。
引用此SO Answer作者:柳本·托多罗夫
关于azure - 将 Spark 时间戳保存到 Azure Synapse datetime2 时出现问题(7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70931805/