Строковые или двоичные данные будут обрезаны в блоках данных при загрузке данных в 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)?

0 ответов

Другие вопросы по тегам