Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql AWS胶水谓词下推条件无效_Mysql_Python 3.x_Amazon Web Services_Pyspark_Aws Glue - Fatal编程技术网

Mysql AWS胶水谓词下推条件无效

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 = "

我有一个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")
无论我在“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"
)