每当我尝试在DW上保存特定的DataFrame时,我都会收到消息:
错误:调用o692.save时发生错误。 :com.databricks.spark.sqldw.SqlDWSideException:SQL DW无法执行连接器产生的JDBC查询。 底层SQLException: -com.microsoft.sqlserver.jdbc.SQLServerException:HdfsBridge :: recordReaderFillBuffer-遇到意外错误 填充记录读取器缓冲区:HadoopSqlException:字符串或二进制 数据将被截断。 [ErrorCode = 107090] [SQLState = S0001]
我已经检查了csv文件中字符串的大小。较大的一个有38个字符。
这是我的保存/写入方法(适用于其他DataFrame):
df.write\
.format('com.databricks.spark.sqldw') \
.option('url', conn_string_dw) \
.option('maxStrLength', '4000') \
.option('forwardSparkAzureStorageCredentials', 'true') \
.option('dbTable', db_table_name) \
.option('tempDir', dw_temporary_path_url) \
.option('truncate', 'False')\
.mode('append')\
.save()
这里会发生什么?
答案 0 :(得分:0)
问题出在最终文件上。一个特定的单元格包含多行,导致此截断问题。