Mysql AWS胶水谓词下推条件无效
我有一个MySQL源代码,从中我创建了一个具有谓词下推条件的粘合动态框架,如下所示Mysql AWS胶水谓词下推条件无效,mysql,python-3.x,amazon-web-services,pyspark,aws-glue,Mysql,Python 3.x,Amazon Web Services,Pyspark,Aws Glue,我有一个MySQL源代码,从中我创建了一个具有谓词下推条件的粘合动态框架,如下所示 datasource = glueContext.create_dynamic_frame_from_catalog( database = source_catalog_db, table_name = source_catalog_tbl, push_down_predicate = "id > 1531812324", transformation_ctx = "
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谓词”中设置了什么条件,我总是在“datasource”中获取所有记录。
我缺少什么?下推谓词仅适用于分区列。换句话说,数据文件应该放在层次结构的文件夹中。例如,如果数据位于
s3://bucket/dataset/
中,并按年、月、日进行分区,则结构应如下所示:
s3://bucket/dataset/year=2018/month=7/day=18/<data-files-here>
此外,您必须记住,下推谓词仅适用于s3数据源
这是AWS Glue devs写的一篇关于数据分区的好文章。这太棒了!我能够使用它通过我的“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。谢谢@Yuriy,这完全有道理。我现在使用胶水的过滤操作来缩小我的结果。它没有效率,因为它在内存中加载完整的表,然后应用过滤器。但是,我相信这是我们现在使用Glue的唯一选择。有没有办法在RDS数据源上应用push_down_谓词?@Sujai没有,不幸的是它只适用于s3源
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"
)