Predykat pushdown działa tylko w przypadku partycjonowania kolumn. Innymi słowy, Twoje pliki danych powinny być umieszczone w folderach o strukturze hierarchicznej. Na przykład, jeśli dane znajdują się w s3://bucket/dataset/
i podzielone według roku, miesiąca i dnia, struktura powinna wyglądać następująco:
s3://bucket/dataset/year=2018/month=7/day=18/<data-files-here>
W takim przypadku predykat pushdown zadziałałby dla kolumn year
, month
i day
tylko:
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")
Poza tym musisz pamiętać, że predykaty pushdown działają tylko ze źródłami danych s3.
Oto fajny post na blogu napisany przez twórców AWS Glue o partycjonowaniu danych.