我正在使用AWS Glue开发ETL管道。因此,我有一个csv文件,它使用PySpark以多种方式进行转换,例如复制列、更改数据类型、添加新列等。我运行了一个爬虫程序,将数据存储在S3位置,因此它根据给定的csv文件创建胶水表。我的意思是,当我向csv文件添加一个新列时,它会在运行爬虫时相应地更改粘合表。
现在我想用Amazon Redshift做同样的事情,我想做的是在Redshift中创建一个表,它类似于我前面提到的粘合表(使用csv创建)。很多答案都解释了如何手动创建红移模式。我也是这样做的,但是当数据类型发生变化时,我必须手动更新它。当csv文件发生变化时,Redhsift表必须进行相应的更新。
我能用爬虫做同样的事情吗?我的意思是创建一个类似于胶水目录表的Redhsift表?所以,当数据类型改变或者在csv文件中删除或添加列时,我们可以运行爬虫,我们可以使用爬虫来做到这一点吗,或者有什么其他方法可以满足我的需要吗?这应该是一个完全自动化的ELT管道。
任何帮助都将不胜感激!
发布于 2021-03-02 15:52:05
你所有问题的答案都是一项艰巨的任务。我的建议是把你想要拼凑起来的每一块拼图的概念都弄清楚。
csv文件显然具有灵活性,这是你在Redshift中得不到的,这是因为列并不是真正键入的,它只是文本……而且速度非常慢。我建议你使用镶嵌文件。
关于Redshift,如果你的表不在那里,你只需要使用spark来写表,它就会被创建,但是...您将无法设置DISTKEY、SORTKEY...通常用于临时表。如果你有额外的列,你不需要手动创建它,spark会做的。但是要改变列的数据类型,这并不简单,而且你不会(轻易)通过ETL实现它。
最后是数据目录,它只是一个模式,元数据,大多数情况下,您使用表来创建元数据,而不是元数据来创建表。
https://stackoverflow.com/questions/66406220
复制相似问题