【发布时间】:2023-03-27 22:37:02
【问题描述】:
我正在尝试将数据帧保存到镶木地板,然后将它们加载到红移中。 为此,我执行以下操作:
parquet_buffer = BytesIO()
df.to_parquet(parquet_buffer,index=False,compression='gzip')
s3.Bucket(write_bucket).put_object(Key=write_path,Body=parquet_buffer.getvalue())
然后我使用“COPY”命令将保存的文件直接加载到redshift:
COPY table_name
from write_path
iam_role my_iam_role
FORMAT AS PARQUET
它会导致以下错误:
write path: has an incompatible Parquet schema for column ...
如果我对 .csv 应用相同的程序,它工作得很好。切换到镶木地板时出现问题的原因是什么?
【问题讨论】:
-
你能分享你的数据样本吗?
-
您使用的是 pyarrow 还是 fastparquet?我推荐 pyarrow
-
我正在使用 Pyarrow
-
你确定 Redshift 知道你的 parquet 文件是 gzip 压缩的吗(根据docs 它会知道文件是否有
.gz后缀)?尝试将GZIP标志添加到COPY命令。 -
我认为不可能有 GZIP 标志以及 FORMAT AS PARQUET。我希望红移会自己识别。但是,问题不在于这里,将压缩更改为 None 并没有改变任何内容。
标签: python pandas amazon-redshift parquet fastparquet