使用PySpark在AWS环境中解码二进制文件

问题描述 投票:0回答:1

是否可以在AWS环境中使用Netezza备份文件并将其加载到Redshift。 文件是使用以下查询创建的压缩二进制文件。该文件也可以使用 Netezza 中的 NZ_BACKUP 实用程序生成完整数据库。

CREATE EXTERNAL TABLE 'C:\filename.bak' USING (remotesource 'ODBC' FORMAT 'internal' 
COMPRESS true) AS SELECT * FROM schema.tablename;

or 

nzbackup -dir /home/user/backups -u user -pw password -db db1

我希望使用 Python 或 PySpark(胶水)对该文件进行解码并加载到 AWS 环境中的数据帧。以下是我计划在 AWS 中执行的步骤。我在第一步需要一些指导。如何解码来自 Netezza 的压缩二进制文件。

  1. 将文件解码为 ASCII(如何?)
  2. 加载到 DF 并生成 parquet
  3. 复制到 Redshift
python pyspark aws-glue binaryfiles netezza
1个回答
0
投票

1.压缩后的文件是什么样的? (做

file xyz.bin
file xyz.bak

2.然后相应地解压它

gzip -dk xyz.bin/bak

3.一旦你有了 ASCII 格式的文件,就可以使用 python 方法

df.to_parquet('path')

无法直接从 parquet 文件复制到 redshift(但是它支持

COPY
),因此要解决此问题,您需要转换为 CSV 文件(AWS Glue),然后将该 csv 复制到 redshift

COPY table_name
FROM 's3://bucket/path/to/output.csv'
IAM_ROLE 'arn:aws:iam::123456789012:role/RedshiftCopyUnload'
CSV;
© www.soinside.com 2019 - 2024. All rights reserved.