使用 Databricks 将十进制字段加载到 Redshift 表时出现 Avro 文件错误

Posted

技术标签:

【中文标题】使用 Databricks 将十进制字段加载到 Redshift 表时出现 Avro 文件错误【英文标题】:Avro file error while loading decimal field into Redshift table using Databricks 【发布时间】:2019-07-18 08:09:58 【问题描述】:

我在 Databricks 中有一个数据框,它有一堆列,包括一个十进制 (15,2) 字段。如果我排除十进制字段,那么我可以将此数据插入到 Redshift 表中,但是当包含十进制字段时,我会收到以下错误:“无法从 s3 文件初始化 avro 阅读器无法解析文件头:无法保存固定架构” 有什么想法吗?

【问题讨论】:

【参考方案1】:

尝试仅使用 decimal 而不使用范围。或将现有列转换为decimal。也尝试使用不同的tempformat。根据我的经验,CSV GZIP 更快。

【讨论】:

如果我将它转换为十进制没有范围,它默认为十进制(10,0),但数据是(12,2),所以会丢失数据。 是的,将格式更改为“CSV GZIP”已经奏效..但仍然对 Avro 的问题感到困惑 当我的架构和那个数据框架构不匹配时,我就发生了这种情况。

以上是关于使用 Databricks 将十进制字段加载到 Redshift 表时出现 Avro 文件错误的主要内容,如果未能解决你的问题,请参考以下文章

将数据从 Databricks 加载到 Azure SQL 时的性能问题

从 Databricks 到 Azure Synapse Analytics:当我们将数据帧加载到表中时,为啥需要将 parquet.writeLegacyFormat 设置为 True?

注册函数时Databricks SCALA UDF无法加载类

Databricks:如何将 %python 下的 Spark 数据帧转换为 %r 下的数据帧

如何使用 spark databricks xml 解析器从 Hdfs 目录加载所有 xml 文件

尝试使用 Databricks 和 SQL 创建表并将数据加载到同一个表中