partition - 突触上的分区表
问题描述
我正在尝试基于 Spark(突触)上的分区表在我的 SqlDW(突触)上创建一个新的分区表
%%spark
val df1 = spark.sql("SELECT * FROM sparkTable")
df1.write.partitionBy("year").sqlanalytics("My_SQL_Pool.dbo.StudentFromSpak", Constants.INTERNAL )
错误:StructuredStream-spark 包版本:2.4.5-1.3.1 StructuredStream-spark 包版本:2.4.5-1.3.1 StructuredStream-spark 包版本:2.4.5-1.3.1 java.sql.SQLException:com.microsoft .sqlserver.jdbc.SQLServerException:由于内部错误,外部文件访问失败:'文件/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.recordReader:创建遇到错误:读者:HadoopExecutionException:列数不匹配。源文件有 5 列,外部表定义有 6 列。 在 com.microsoft.spark.sqlanalytics.utils.SQLAnalyticsJDBCWrapper.executeUpdateStatement(SQLAnalyticsJDBCWrapper.scala:89) 在
谢谢
解决方案
函数名称已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
现在使用语法在数据库中进行分区切换。
推荐阅读
- kentico - Web 场服务器和任务
- java - 实现 Spring ThreadPoolTaskExecutor 并提供最佳配置值
- python - 用于常微分方程分岔分析的 Python 库或包
- python-3.x - 加载 csv 并删除 \r\n python
- r - 当我尝试使用 rvest 抓取 mlb.com 交易时没有返回任何内容
- java - 为什么经过几次迭代后 Bufferedimage 等于 null?
- regex - 从文本中提取文本(单词)和 IP 地址
- jooq - 有没有办法生成带有内联和索引参数的查询字符串?
- ios - 如何实现平移手势以折叠展开的 collectionview 单元格?
- javascript - 如何使用 Axios 向 POST 请求添加数据?