如何从AWS Glue中的JDBC目录连接中加载部分数据?

时间:2018-09-24 16:59:35

标签: jdbc pyspark aws-glue

我知道我可以通过Glue上下文从JDBC Cataloged连接中加载整个表,如下所示:

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 个答案:

答案 0 :(得分:0)

从理论上讲,您可以使用Pushdown predicates在Glue中使用分类连接来实现此目的,在其中添加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源支持此功能。