amazon-web-services - 如何使用 Glue 数据目录创建 Redshift 表
问题描述
我正在使用AWS Glue开发ETL管道。所以我有一个使用PySpark以多种方式转换的文件,例如重复列、更改数据类型、添加新列等。我在 S3 位置运行了一个带有数据存储的爬虫,因此它根据给定创建了 Glue Table文件。我的意思是当我在文件中添加一个新列时,它会在运行爬虫时相应地更改 Glue Table。csv
csv
csv
现在我想对Amazon Redshift做同样的事情,我想做的是在 Redshift 中创建一个类似于我之前提到的 Glue 表(使用创建csv
)的表。很多答案解释了手动创建 Redshift 模式。我也这样做了,但是当数据类型发生变化时,我必须手动更新它。当csv
文件更改时,Redhsift 表必须相应更新。
我可以使用爬虫做同样的事情吗?我的意思是创建一个类似于 Glue 目录表的 Redhsift 表?因此,当数据类型更改或在文件中删除或添加列时,csv
我们可以运行爬虫,我们可以使用爬虫来做到这一点,还是有其他方法可以满足我的需要?这应该是一个全自动的 ELT 管道。
任何帮助将不胜感激!
解决方案
你所有问题的答案都是一项艰巨的任务。我的建议是弄清楚你想要拼凑的每一块拼图的概念。
csv 文件显然具有灵活性,您不会在 Redshift 中获得这种灵活性,这是因为这些列没有真正输入,它只是文本......而且速度很慢。我建议您使用镶木地板文件。
关于Redshift,如果你的表不存在,你只需使用spark写表,它就会被创建,但是......你将无法设置DISTKEY,SORTKEY......它通常用于临时表. 如果你有额外的列,你不需要手动创建它,spark 会做。但是更改列数据类型并不简单,而且您不会(容易)通过 ETL 实现它。
最后是数据目录,它只是一个模式,元数据,大多数情况下您使用表来创建元数据,而不是元数据来创建表。
推荐阅读
- ajax - f:ajax 在我刷新之前不会呈现 outputPanel
- reactjs - 不能在 react-native 项目中使用 react-navigation 和 typescript 进行导航
- javascript - 如何按 2 个不同的属性进行过滤?
- python - 使用 list 在循环中设置函数和名称输出
- python - Django/PostgreSQL 全文搜索 - 在 AWS RDS PostgreSQL 上使用 SearchVector 与 SearchVectorField 时的不同搜索结果
- python-3.x - 如何根据另一列的值填充数据框列
- swift - 如何从可编码结构中的空数组中删除双引号
- reportlab - 将 img src 输出为文本,而不是图像
- sql - 选择 PostgeSQL 数组的每个第 n 个元素
- groovy - 在 Groovy 中将 2 个列表与流结合起来