从 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?