AWS Glue 谓词下推条件无效
AWS Glue predicate push down condition has no effect
我有一个 MySQL 来源,我正在从中创建一个具有如下谓词下推条件的 Glue 动态框架
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_down_predicate' 中输入什么条件,我总是得到 'datasource' 中的所有记录。
我错过了什么?
下推谓词仅适用于分区列。换句话说,您的数据文件应该放在分层结构的文件夹中。例如,如果数据位于 s3://bucket/dataset/
并按年、月和日进行分区,则结构应如下所示:
s3://bucket/dataset/year=2018/month=7/day=18/<data-files-here>
在这种情况下,下推谓词仅适用于列 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")
除此之外,您必须牢记下推谓词仅适用于 s3 数据源。
这是 AWS Glue 开发人员撰写的一篇关于数据分区的精彩 blog post。
太棒了!我能够使用它来使用我的 "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 - Python 2.
我有一个 MySQL 来源,我正在从中创建一个具有如下谓词下推条件的 Glue 动态框架
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_down_predicate' 中输入什么条件,我总是得到 'datasource' 中的所有记录。 我错过了什么?
下推谓词仅适用于分区列。换句话说,您的数据文件应该放在分层结构的文件夹中。例如,如果数据位于 s3://bucket/dataset/
并按年、月和日进行分区,则结构应如下所示:
s3://bucket/dataset/year=2018/month=7/day=18/<data-files-here>
在这种情况下,下推谓词仅适用于列 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")
除此之外,您必须牢记下推谓词仅适用于 s3 数据源。
这是 AWS Glue 开发人员撰写的一篇关于数据分区的精彩 blog post。
太棒了!我能够使用它来使用我的 "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 - Python 2.