如何从 AWS Glue 中的 JDBC 编目连接加载部分数据?
Posted
技术标签:
【中文标题】如何从 AWS Glue 中的 JDBC 编目连接加载部分数据?【英文标题】:How to load partial data from a JDBC cataloged connection in AWS Glue? 【发布时间】:2018-09-24 16:59:35 【问题描述】:我知道我可以通过 Glue 上下文从 JDBC 编目连接加载整个表,如下所示:
glueContext.create_dynamic_frame.from_catalog(
database="jdbc_rds_postgresql",
table_name="public_foo_table",
transformation_ctx="datasource0"
)
但是,我想做的是使用编目连接部分加载表,就像我通过 spark 会话使用未编目的 JDBC 连接一样:
query = "(select * from public.foo_table where date='%s') as data" % date_fm)
spark.read.jdbc(url=DB_URL, table=query)
有没有办法可以使用编目连接?
或者,当使用未编目的连接时,我很难理解如何锁定对未编目的连接的访问,以便只有 Glue 作业可以访问它。我有哪些选择?
【问题讨论】:
【参考方案1】:理论上,您可以在 Glue 中使用 Pushdown predicates 进行编目连接来实现此目的,您可以在其中添加 push_down_predicate
参数以在读取数据时过滤数据。因此,使用您的示例:
glueContext.create_dynamic_frame.from_catalog(
database="jdbc_rds_postgresql",
table_name="public_foo_table",
transformation_ctx="datasource0",
push_down_predicate="date=%s" % date_fm
)
但是,在撰写本文时,这似乎仅支持 S3 源。
【讨论】:
目前仅s3
存储支持下推谓词功能。但是,据我所知,AWS Glue 团队正在努力为 JDBC 连接实现它。
@YuriyBondaruk 你对当前的 s3 限制有什么参考吗?
你可以在这里找到它:aws.amazon.com/blogs/big-data/…。它没有明确说明仅支持 S3,但我认为它是 AWS 详细解释下推谓词功能的唯一公共资源以上是关于如何从 AWS Glue 中的 JDBC 编目连接加载部分数据?的主要内容,如果未能解决你的问题,请参考以下文章
AWS Glue:如何使用 JDBC 连接 oracle db