从 parquet 文件将具有默认值的数据加载到 Redshift

Posted

技术标签:

【中文标题】从 parquet 文件将具有默认值的数据加载到 Redshift【英文标题】:Load data with default values into Redshift from a parquet file 【发布时间】:2021-04-13 21:23:30 【问题描述】:

我需要将具有默认值列的数据加载到 Redshift,如 AWS docs 中所述。

不幸的是,COPY 命令不允许从 parquet 文件加载具有默认值的数据,所以我需要找到一种不同的方法来做到这一点。

我的表需要一个带有 Redshift 的 getdate 函数的列:

         LOAD_DT TIMESTAMP DEFAULT GETDATE()

如果我使用 COPY 命令并将列名添加为参数,则会收到错误:

     Column mapping option argument is not supported for PARQUET based COPY

有什么解决方法?

【问题讨论】:

【参考方案1】:

您能否发布不支持 Parquet COPY 的默认值的 Redshift 参考?我没听说过这个限制。

至于变通办法,我能想到两个。

    将文件复制到临时表,然后使用默认值从此临时表插入到您的表中。 定义一个使用 parquet 文件作为源的外部表,并从该表插入到具有默认值的表中。

【讨论】:

不,我还没有找到明确说明这一点的参考资料,但是当以本用例概述的方式使用 COPY 命令时,我收到关于它不受支持的错误,所以这就是我的意思我基于此。 如果您有权访问 AWS 支持,放弃工单可以说明功能,如果可能,说明如何。无论哪种方式,我都希望这些解决方法之一对您有用。

以上是关于从 parquet 文件将具有默认值的数据加载到 Redshift的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 dask/fastparquet 从多个目录中读取多个 parquet 文件(具有相同架构)

使用 spark 将 parquet 数据从 Google 云存储加载到 BigQuery

将具有无效字符的嵌套字段从 Spark 2 导出到 Parquet [重复]

使用 spark 将 parquet 文件加载到 vertica 数据库中

我们可以直接将 Parquet 文件加载到 Hive 中吗?

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