Spark DataFrame в таблицу ADW: невозможно вставить столбец с символами> 4k

У меня есть искровый фрейм данных на DataBricks со столбцом со значением, имеющим длину символа> 10000.

Мне нужно вставить это в таблицу хранилища данных Azure (ADW), но я получаю сообщение об ошибке, если длина символа столбца превышает 4000.

Ошибка: возникла непредвиденная ошибка при заполнении буфера устройства чтения записей: HadoopSqlException: строковые или двоичные данные будут усечены.

df.write.format("com.databricks.spark.sqldw") \
.option("url", sqlDwUrl) \
.option("forwardSparkAzureStorageCredentials", "true") \
.option("dbtable", writeTableName) \
.option("tempDir", tempDir) \
.mode("append") \
.option("maxStrLength",4000)\
.save()

Что мне нужно сделать, чтобы вставить столбец с длиной символа> 10 или 20 КБ.

1 ответ

Когда мы смотрим на ограничения емкости хранилища данных SQL сегодня

Bytes per Column - (depends on the column data type)
Limit is 8000 for char data types, 
4000 for nvarchar, or 2 GB for MAX data types.

Таким образом, сегодня мы не можем принять столбец с длиной символа> 10 КБ. Вариант может заключаться в том, чтобы разделить данные столбца для приема, а затем, если потребуется, объединить столбцы.

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