我可以直接查询以镶木地板格式存储在 s3 中的数据的红移表吗
Posted
技术标签:
【中文标题】我可以直接查询以镶木地板格式存储在 s3 中的数据的红移表吗【英文标题】:can I directly query redhisft tables where data stored in s3 in parquet format 【发布时间】:2017-09-21 07:39:44 【问题描述】:我有一个以 parquet 格式存储在 s3 中的数据集。我想知道我是否可以使用复制命令将这些数据加载到 redshift 中。我已经读过我可以使用 redhisft 频谱,我可以在其中提到存储在 hive 中的模式并在 redhisft 中读取它。
对我有用的是,如果我可以从 redhisft 查询存储在 s3 中的镶木地板数据,或者我可以使用复制命令将它们直接加载到 redshift 中。
有一些选项可以让我旋转集群并使用 jdbc 将 parquet 数据写入 s3。但问题是 jdbc 与复制命令相比太慢了。
【问题讨论】:
【参考方案1】:使用 Redshift External Schema 和表,您可以将 Parquet 数据从 S3 加载到 redshift。
CREATE external table spectrum.LINEITEM_PART_PARQ (
L_ORDERKEY BIGINT,
L_PARTKEY BIGINT,
L_SUPPKEY BIGINT,
L_LINENUMBER INT,
L_QUANTITY DECIMAL(12,2),
L_EXTENDEDPRICE DECIMAL(12,2),
L_DISCOUNT DECIMAL(12,2),
L_TAX DECIMAL(12,2),
L_RETURNFLAG VARCHAR(128),
L_LINESTATUS VARCHAR(128),
L_COMMITDATE VARCHAR(128),
L_RECEIPTDATE VARCHAR(128),
L_SHIPINSTRUCT VARCHAR(128),
L_SHIPMODE VARCHAR(128),
L_COMMENT VARCHAR(128))
partitioned by (L_SHIPDATE VARCHAR(128))
stored as PARQUET
location 's3://<your-bucket>/<xyz>/lineitem_partition/
来源:-https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/
http://docs.aws.amazon.com/redshift/latest/dg/c-getting-started-using-spectrum.html
http://docs.aws.amazon.com/redshift/latest/dg/c-getting-started-using-spectrum-query-s3-data.html
从外部表向redshift表中插入数据。
插入表格 (从 external_table 中选择 *);
【讨论】:
感谢您回答这个问题。如果我必须使用频谱,我必须单独支付 aws,这是我不想要的。我正在尝试了解是否有一种方法可以直接加载镶木地板数据,或者是否可以将它们访问到 redshift 而无需任何额外费用。以上是关于我可以直接查询以镶木地板格式存储在 s3 中的数据的红移表吗的主要内容,如果未能解决你的问题,请参考以下文章
AWS Spectrum 为 AWS Glue 生成的镶木地板文件提供空白结果
使用 sparkSession.createDataFrame 以 parquet 格式一次将多行写入 s3
使用 pyspark 将镶木地板文件(在 aws s3 中)存储到 spark 数据框中