Redshift UNLOAD操作的parquet文件大小

0

【以下的问题经过翻译处理】 我的客户有一个由2-4个dc2.8xlarge节点组成的 Redshift集群。他们想要通过设置选项(MAXFILESIZE AS 1GB),将数据以Parquet 格式,并以约为1GB的平均文件大小导出。但是引擎却以5MB到25MB的平均文件大小,导出了总共500MB的数据,共计64个文件。

我的问题:

  1. 我们如何控制每个parquet文件的大小?
  2. Redshift如何确定最佳文件大小?
profile picture
EXPERT
asked 6 months ago12 views
1 Answer
0

【以下的回答经过翻译处理】 在默认配置下,UNLOAD命令导出与片数相等的文件数量。对于一个DC2.8xlarge 4个节点的集群,片数为64(4个节点*每个节点16个片)。这是默认行为,能使所有片段并行导出。当以Parquet格式导出时,Redshift试图使用32MB行组的块大小。这对于数据量较小的情况,32MB块大小已经足够,它会生成更小的文件。多个文件比单个文件更有效,因为对于单个文件,Redshift将来自表的数据组合,然后生成一个单个文件-无法发挥并行计算的优势。

生成固定大小的文件的一个解决方案是设置UNLOAD命令选项:PARALLEL OFF和MAXFILESIZE 1GB。

profile picture
EXPERT
answered 6 months ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions