如何使用 Glue 数据目录创建 Redshift table

How to create a Redshift table using Glue Data Catalog

我正在开发 ETL pipeline using AWS Glue. So I have a csv file that is transformed in many ways using PySpark,例如复制列、更改数据类型、添加新列等。我 运行 一个爬虫,其数据存储在 S3 位置,因此它创建了 Glue Table 根据给定的 csv 文件。我的意思是,当我向 csv 文件添加一个新列时,它会在 运行 爬虫时相应地更改 Glue Table。

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

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

如有任何帮助,我们将不胜感激!

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

csv 文件显然具有灵活性,这是您在 Redshift 中无法获得的,这是因为列不是真正键入的,它只是文本...而且速度非常慢。我建议您使用镶木地板文件。

关于 Redshift,如果你的 table 不存在,你只需使用 spark 编写 table,它就会被创建,但是......你将无法设置DISTKEY, SORTKEY... 它通常用于 temp tables。如果你有额外的列,你不需要手动创建它,spark 会做。但是改变列的数据类型,这并不简单,你不会通过 ETL(轻松地)实现它。

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