从 Glue 作业的 Glue 数据目录访问 Aurora Postgres 物化视图

Accessing Aurora Postgres Materialized Views from Glue data catalog for Glue Jobs

我有一个 Aurora Serverless 实例,它有跨 3 table 加载的数据(标准和 jsonb 数据类型的混合)。我们目前使用传统视图,其中一些深度嵌套的元素与其他列一起显示出来以进行聚合等。

我们有两个实体化视图要发送到 Redshift。 Aurora Postgres 和 Redshift 都在 Glue Catalog 中,虽然我可以将 Postgres 视图视为选择table table,但爬虫不会获取物化视图。

目前正在探索使数据红移的两种选择。

  1. 输出到parquet并使用复制加载
  2. 将物化视图指向 jdbc 指定红移的接收器。

如果有人做过类似的用例,需要关于什么可能是最有效方法的建议。

问题:

  1. 在选项 1 中,我是否能够处理增量负载?
  2. 即使通过 Glue,JDBC (Aurora Postgres) 到 JDBC (Redshift) 交易是否支持书签?
  3. 是否有更好的方法(除了我正在考虑的选项)将数据从 Aurora Postgres Serverless (10.14) 移动到 Redshift。

提前感谢您提供的任何指导。

使用选项 2。Redshift Copy/Load 进程在任何情况下都会将带有清单的 csv 写入 S3,因此复制是没有意义的。

关于问题:

  1. N/A

  2. 工作书签确实有效。虽然有一些陷阱 - 确保 Glue Pyspark 作业中存在与 RDS 和 Redshift 的连接,IAM 自我引用规则到位并识别唯一的行 [我选择底层 table 的主键作为我的实体化视图中的附加列]用作书签。

  3. 使用核心的主键 table 可以提高维护周期中修剪物化视图的效率。只需使用 aws glue get-job-bookmark --job-name yourjobname 从 cli 检索最新的书签,然后在 mv 的 where 子句中检索最新的书签,如 where id >= idinbookmark

    conn = glueContext.extract_jdbc_conf("yourGlueCatalogdBConnection") connection_options_source = { "url": conn['url'] + "/yourdB", "dbtable": "table in dB", "user": conn['user'], "password": conn['password'], "jobBookmarkKeys":["unique identifier from source table"], "jobBookmarkKeysSortOrder":"asc"}

datasource0 = glueContext.create_dynamic_frame.from_options(connection_type="postgresql", connection_options=connection_options_source, transformation_ctx="datasource0")

就这些了,伙计们