Строковые или двоичные данные будут обрезаны в блоках данных при загрузке данных в ADW с использованием polybase
Я пытаюсь вставить данные в свой Azure SQL DW, используя базы данных / polybase, используя запрос, как показано ниже:
df.select(df.tnt_orgn_id,df.grp_id,df.grp_nm_txt,df.grp_typ_txt,df.grp_desc_txt).
write.format("com.databricks.spark.sqldw").mode("append").
option("url",url).
option("user",'username').
option("password",'password').
option("forwardSparkAzureStorageCredentials", "true").
option("dbTable", "tabname").
option("tempDir", source_file_path+"tmp").
save()
но получаю ошибку:
com.microsoft.sqlserver.jdbc.SQLServerException: HdfsBridge::recordReaderFillBuffer - Произошла непредвиденная ошибка при заполнении буфера чтения записей: HadoopSqlException: строка или двоичные данные будут усечены. [ErrorCode = 107090] [SQLState = S0001]
поэтому я проверил на максимальный размер полей dataframe
max(length(tnt_orgn_id)) max(length(grp_id)) max(length(grp_nm_txt)) max(length(grp_typ_txt)) max(length(grp_desc_txt))
4 36 71 17 555
и я изменил структуру таблицы, как показано ниже:
CREATE TABLE dbo.tabname
(
tnt_orgn_idinteger NOT NULL,
grp_id nvarchar(200) NOT NULL,
grp_nm_txt char(100) NULL,
grp_typ_txt char(30) NULL,
grp_desc_txt varchar(8000) NULL
)
все еще получая ту же ошибку, я обнаружил, что это происходит только для grp_desc_txt
поле. Есть ли какие-либо ограничения на размер строки таблицы Polybase (максимальный размер поля grp_desc_txt равен 555)?