我创建了一个胶水作业,将数据从S3(csv文件)复制到Redshift . 它可以工作并填充所需的表格 .
但是,我需要在此过程中清除表,因为在完成该过程后,我将留下重复的记录 .
我正在寻找一种方法将此清除添加到Glue流程中 . 任何意见,将不胜感激 .
谢谢 .
你看过Job Bookmarks in Glue了吗?这是保持高水位标记的功能,仅适用于s3 . 我不是100%肯定,但它可能需要分区到位 .
您需要修改Glue提供的自动生成代码 . 使用spark jdbc连接连接到redshift并执行清除查询 .
在红移VPC中旋转胶水容器;在glue作业中指定连接,以获得对redshift集群的访问权限 .
希望这可以帮助 .
您可以使用spark / Pyspark数据库来覆盖表:
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"])\ .mode("overwrite")\ .save()
Per Databricks / Spark文档:
覆盖现有表:默认情况下,此库使用事务来执行覆盖,这是通过删除目标表,创建新的空表并向其追加行来实现的 .
您可以查看here中的数据库文档
3 回答
你看过Job Bookmarks in Glue了吗?这是保持高水位标记的功能,仅适用于s3 . 我不是100%肯定,但它可能需要分区到位 .
您需要修改Glue提供的自动生成代码 . 使用spark jdbc连接连接到redshift并执行清除查询 .
在红移VPC中旋转胶水容器;在glue作业中指定连接,以获得对redshift集群的访问权限 .
希望这可以帮助 .
您可以使用spark / Pyspark数据库来覆盖表:
Per Databricks / Spark文档:
您可以查看here中的数据库文档