我试图在我的SqlDW (突触)上创建一个新的分区表(synapse),它基于星火上的分区表(synapse)
%%spark
val df1 = spark.sql("SELECT * FROM sparkTable")
df1.write.partitionBy("year").sqlanalytics("My_SQL_Pool.dbo.StudentFromSpak", Constants.INTERNAL )错误:结构流-火花包版本: 2.4.5-1.3.1结构流-火花包版本: 2.4.5-1.3.1结构流-火花包版本: 2.4.5-1.3.1 java.sql.SQLException:由于内部错误导致外部文件访问失败:‘文件/synapse/workspaces/test-partition-workspace/sparkpools/myspark/sparkpoolinstances/c5e00068-022d-478f-b4b8-843900bd656b/livysessions/2021/03/09/1/tempdata/SQLAnalyticsConnectorStaging/application_1615298536360_0001/aDtD9ywSeuk_shiw47zntKz.tbl/year=2000/part-00004-5c3e4b1a-a580-4c7e-8381-00d92b0d32ea.c000.snappy.parquet: HdfsBridge::CreateRecordReader -创建记录阅读器: HadoopExecutionException:列计数不匹配时遇到的意外错误。源文件有5列,外部表定义有6列。
谢谢
发布于 2021-07-02 01:14:26
sqlanalytics()函数名已更改为synapsesql()。它目前不支持编写分区表,但是您可以自己实现这一点,例如将多个表写回专用SQL池,然后在那里切换使用分区。
语法很简单(按照文献资料):
df.write.synapsesql("<DBName>.<Schema>.<TableName>", <TableType>)一个例子是:
df.write.synapsesql("yourDb.dbo.yourTablePartition1", Constants.INTERNAL)
df.write.synapsesql("yourDb.dbo.yourTablePartition2", Constants.INTERNAL)现在,使用ALTER TABLE ... SWITCH PARTITION语法在数据库中进行分区切换。
https://stackoverflow.com/questions/66549280
复制相似问题