Redshift 中的列主要卸载
Posted
技术标签:
【中文标题】Redshift 中的列主要卸载【英文标题】:Column-major unload in Redshift 【发布时间】:2015-07-09 21:07:01 【问题描述】:我想以列主要格式将 Redshift 中的内容转储到 S3 中(因此每列一个文件)。奇怪的是,到目前为止,我在互联网上或其他地方没有发现任何人想要这样做。
我的问题是 Redshift/PostgreSQL 是否支持以列格式加载和卸载数据,如果没有,是否还有其他支持。这对我来说似乎很奇怪,这不会是一件事——数据是按列存储的,不是吗?我知道,我知道,“切片/节点”,但 sortkey(以及传入数据已排序的必要假设)不会处理它吗?
【问题讨论】:
你想达到什么目的?加载速度更快?一些外部处理? 两者。我正在尝试制作尽可能快的分布式 (Spark) 应用程序,该应用程序将处理列并将其转换为更适合 ML 的格式。 Unload 返回一个以行为主的文件,每隔这么多行就分成块。我想要的是一些以列为主的东西(理想情况下,每个文件一列)。这将使摄取更快。如果什么都不存在也没关系,我只是想问问。 【参考方案1】:UNLOAD
没有以列格式显示的内置功能。
但是,Amazon Redshift UNLOAD
命令采用 SELECT
语句,因此它可以运行多次,每次使用不同的列。
来自UNLOAD documentation:
UNLOAD ('select_statement')
TO 's3://object_path_prefix'
[ WITH ] CREDENTIALS [AS] 'aws_access_credentials'
[ option [ ... ] ]
【讨论】:
以上是关于Redshift 中的列主要卸载的主要内容,如果未能解决你的问题,请参考以下文章
Redshift - 如何使用一个表中的列作为 SIMILAR TO 中的模式
将大型数据集从 Redshift 卸载到 S3 失败并出现 I/O 错误