Spark DataFrame到ADW表:无法插入字符> 4k的列

时间:2019-11-21 12:12:27

标签: python apache-spark databricks azure-databricks databricks-connect

我在DataBricks上有spark数据框,其中一列的值的字符长度> 10,000。

我需要将其插入到Azure数据仓库(ADW)表中,但是如果列char长度超过4,000,则会收到错误消息。

  

错误:填充记录读取器缓冲区时遇到意外错误: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()

要插入字符长度> 10k或20k的列,我需要做些什么。

1 个答案:

答案 0 :(得分:0)

当我们今天研究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.

因此,今天我们不能提取大于10k的字符列。选项可能是拆分列数据以提取,然后在需要时合并列。