包含總是autogenerate Dataframe寫SQL Server表列失敗。我使用Apache火花連接器為SQL Server和SQL Azure。並不包含在dataframe autogenerate字段時,我遇到了——“沒有發現關鍵”的錯誤如果自動生成列包含在dataframe,我遇到了“不能插入一個顯式的值生成總是列在表的錯誤。”
Azure磚- 7.6運行時——PySpark Azure SQL數據庫語言
遇到異常
org.apache.spark。SparkException:工作階段失敗而終止:任務0階段5.0失敗了4次,最近的失敗:在舞台上失去了任務0.3 5.0 (10.139.64.4 TID 25日,執行人1):com.microsoft.sqlserver.jdbc。SQLServerException:不能插入一個顯式的值總是一個生成的列在表' <
”。使用插入一列名單排除總是生成的列,或插入一個默認生成的列。
PySpark df =鋪文件讀取代碼
df。寫\ .format (com.microsoft.sqlserver.jdbc.spark) \ .mode(“追加”)\ .option (“url”, url) \ .option(“數據表”,“TEMPORAL_TABLE”) \ .option(“用戶”,_username) \ .option(“密碼”,_password) \ .option(“司機”,“com.microsoft.sqlserver.jdbc.SQLServerDriver”) \ .option (“schemaCheckEnabled”,假)\ .save ()
SQL Azure時態表定義:
DBO創建表。TEMPORAL_TABLE ((UUID) varchar (255) NOT NULL, [SERVICE_ID] [bigint] NULL, [START_DATE] [datetime2] (7) NULL, [END_DATE] [datetime2] (7) NULL, [CHANGED_ON] [datetime2] (7) NULL,[行動](char)(1)空,[SysStartTime] [datetime2](7)生成總是隨著行開始NOT NULL, [SysEndTime] [datetime2](7)生成的總是作為行NOT NULL結束,主鍵約束(PK_TEMPORAL)集群((UUID) ASC) (STATISTICS_NORECOMPUTE =, IGNORE_DUP_KEY =, OPTIMIZE_FOR_SEQUENTIAL_KEY =)(主要),期限SYSTEM_TIME ([SysStartTime], [SysEndTime]))與(SYSTEM_VERSIONING =[主要](HISTORY_TABLE =(曆史)。[TEMPORAL_TABLE_HISTORY])) ALTER TABLE DBO去。TEMPORAL_TABLE添加默認(newid ()) (UUID) ALTER TABLE DBO去。TEMPORAL_TABLEADD違約(getutcdate ()) [SysStartTime] ALTER TABLE DBO去。TEMPORAL_TABLE添加默認(轉換([datetime2], ' 9999-12-31 23:59:59.9999999 '))對[SysEndTime]