首页 > 解决方案 > 如何使用 Glue 数据目录创建 Redshift 表

问题描述

我正在使用AWS Glue开发ETL管道。所以我有一个使用PySpark以多种方式转换的文件,例如重复列、更改数据类型、添加新列等。我在 S3 位置运行了一个带有数据存储的爬虫,因此它根据给定创建了 Glue Table文件。我的意思是当我在文件中添加一个新列时,它会在运行爬虫时相应地更改 Glue Table。csvcsvcsv

现在我想对Amazon Redshift做同样的事情,我想做的是在 Redshift 中创建一个类似于我之前提到的 Glue 表(使用创建csv)的表。很多答案解释了手动创建 Redshift 模式。我也这样做了,但是当数据类型发生变化时,我必须手动更新它。当csv文件更改时,Redhsift 表必须相应更新。

我可以使用爬虫做同样的事情吗?我的意思是创建一个类似于 Glue 目录表的 Redhsift 表?因此,当数据类型更改或在文件中删除或添加列时,csv我们可以运行爬虫,我们可以使用爬虫来做到这一点,还是有其他方法可以满足我的需要?这应该是一个全自动的 ELT 管道。

任何帮助将不胜感激!

标签: amazon-web-servicespysparkamazon-redshiftetlaws-glue-data-catalog

解决方案


你所有问题的答案都是一项艰巨的任务。我的建议是弄清楚你想要拼凑的每一块拼图的概念。

csv 文件显然具有灵活性,您不会在 Redshift 中获得这种灵活性,这是因为这些列没有真正输入,它只是文本......而且速度很慢。我建议您使用镶木地板文件。

关于Redshift,如果你的表不存在,你只需使用spark写表,它就会被创建,但是......你将无法设置DISTKEY,SORTKEY......它通常用于临时表. 如果你有额外的列,你不需要手动创建它,spark 会做。但是更改列数据类型并不简单,而且您不会(容易)通过 ETL 实现它。

最后是数据目录,它只是一个模式,元数据,大多数情况下您使用表来创建元数据,而不是元数据来创建表。


推荐阅读