AWS Glue截断红移表

问题描述 投票:2回答:3

我创建了一个胶水作业,将数据从S3(csv文件)复制到Redshift。它可以工作并填充所需的表格。

但是,我需要在此过程中清除表,因为在完成该过程后,我将留下重复的记录。

我正在寻找一种方法将此清除添加到Glue流程中。任何意见,将不胜感激。

谢谢。

python amazon-web-services pyspark amazon-redshift aws-glue
3个回答
0
投票

你看过Job Bookmarks in Glue了吗?这是保持高水位标记的功能,仅适用于s3。我不是100%肯定,但它可能需要分区到位。


0
投票

您需要修改Glue提供的自动生成代码。使用spark jdbc连接连接到redshift并执行清除查询。

在红移VPC中旋转胶水容器;在glue作业中指定连接,以获得对redshift集群的访问权限。

希望这可以帮助。


-1
投票

您可以使用spark / Pyspark数据库库在表的截断表后执行追加(这比覆盖更好):

preactions = "TRUNCATE table <schema.table>" 
df.write\
  .format("com.databricks.spark.redshift")\
  .option("url", redshift_url)\
  .option("dbtable", redshift_table)\
  .option("user", user)\
  .option("password", readshift_password)\
  .option("aws_iam_role", redshift_copy_role)\
  .option("tempdir", args["TempDir"])\
  .option("preactions", preactions)\
  .mode("append")\
  .save()

您可以查看here中的数据库文档

© www.soinside.com 2019 - 2024. All rights reserved.