aws glue predicate 下推条件没有效果

igetnqfo  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(333)

我有一个mysql源代码,从中我创建了一个带有 predicate 下推条件的粘合动态框架,如下所示

datasource = glueContext.create_dynamic_frame_from_catalog(
    database = source_catalog_db, 
    table_name = source_catalog_tbl, 
    push_down_predicate = "id > 1531812324", 
    transformation_ctx = "datasource")

无论我在“push\u down\u predicate”中设置什么条件,我总是在“datasource”中获取所有记录。我错过了什么?

mwyxok5s

mwyxok5s1#

这太好了!我可以使用“dt”分区列来获取过去30天的数据:

datasource0 = glueContext.create_dynamic_frame.from_catalog(
    database = "my_db",
    table_name = "my_table",
    push_down_predicate = "to_date(dt) >= date_sub(current_date, 30)", 
    transformation_ctx = "datasource0"
)

我使用的是glue 1.0-spark 2.4-Python2。

f0brbegy

f0brbegy2#

下推 predicate 仅适用于分区列。换句话说,数据文件应该放在层次结构的文件夹中。例如,如果数据位于 s3://bucket/dataset/ 按年、月、日划分,结构如下:

s3://bucket/dataset/year=2018/month=7/day=18/<data-files-here>

在这种情况下,下推 predicate 适用于列 year , month 以及 day 仅限于:

datasource = glueContext.create_dynamic_frame_from_catalog(
    database = source_catalog_db, 
    table_name = source_catalog_tbl, 
    push_down_predicate = "year = 2017 and month > 6 and day between 3 and 10", 
    transformation_ctx = "datasource")

除此之外,您必须记住下推 predicate 只能用于s3数据源。
这是一篇由aws glue devs撰写的关于数据分区的博客文章。

相关问题