【发布时间】:2022-01-06 18:25:19
【问题描述】:
我有一列包含描述,长度约为 80000(包含 unicode 字符)。我无法将其加载到 Azure Synapse Analytics。 Synapse 中定义的数据类型是 nvarchar。 我们正在使用 Azure Databricks。我尝试了 maxStrLength (.option('maxStrLength', 4000)) 的选项,但最大值是 4000。所以,我收到了这个错误。
:com.databricks.spark.sqldw.SqlDWSideException:Azure Synapse Analytics 无法执行连接器生成的 JDBC 查询。 底层 SQLException(s):
- com.microsoft.sqlserver.jdbc.SQLServerException:HdfsBridge::recordReaderFillBuffer - 填充记录读取器缓冲区时遇到意外错误:HadoopSqlException:字符串或二进制数据将被截断。 [错误代码 = 107090] [SQLState = S0001]
请问有什么办法可以解决这个问题吗?
更新 - 通过在将数据帧写入 Synapse 并将目标数据类型声明为 nvarchar(max) 时删除 .option('maxStrLength', 4000) 解决了该问题
【问题讨论】:
-
遇到此错误时您正在运行什么代码?请发布匿名版本。在 Synapse 专用 SQL 池中使用外部表时遇到类似错误,解决方法是创建一个具有 NVARCHAR(MAX) 数据类型的表并且未使用聚集列存储索引。
标签: azure apache-spark azure-synapse