AWS Glue Dynamic_frame с предикатом pushdown неправильно фильтруется - PullRequest
1 голос
/ 29 октября 2019

Я пишу сценарий для AWS Glue, созданный в S3-файлах, хранимых в S3, в котором я создаю DynamicFrame и пытаюсь использовать логику pushDownPredicate для ограничения поступления данных.

Разделы таблицы(по порядку): account_id> region> vpc_id> dt

А код для создания dynamic_frame следующий:

dynamic_frame = glueContext.create_dynamic_frame.from_catalog(
    database = DATABASE_NAME,
    table_name= TABLE_NAME,
    push_down_predicate = "dt='" + DATE + "'")

где DATE = '2019-10-29'

Однако кажется, что Glue все еще пытается прочитать данные из других дней. Может быть, это потому, что я должен указать push_down_predicate для других критериев?

1 Ответ

0 голосов
/ 31 октября 2019

Согласно комментариям, журналы показывают, что столбец раздела даты помечен как «dt», где, как и в вашей таблице, на него ссылается имя «дата»

Журналы

s3://route/account_id=XXX/region=eu-west-1/vpc_id=YYY/dt=2019-07-15 
s3://route/account_id=XXX/region=eu-west-1/vpc_id=YYY//dt=2019-10-03 
s3://route/account_id=XXX/region=eu-west-1/vpc_id=YYY//dt=2019-08-27 
s3://route/account_id=XXX/region=eu-west-1/vpc_id=YYY//dt=2019-10-29 ...

Ваш код

dynamic_frame = glueContext.create_dynamic_frame.from_catalog(
database = DATABASE_NAME,
table_name= TABLE_NAME,
push_down_predicate = "date='" + DATE + "'")

Измените дату имя столбца разделов на dt в вашей таблице и то же самое в параметре push_down_predicate в вышеприведенном коде.

Я также вижу дополнительные прямые косые черты в некоторых путях в журналах выше, были ли эти разделы добавлены вручную через athena, используяКоманда ALTER TABLE? Если это так, я бы рекомендовал использовать команду MSCK REPAIR для загрузки всех разделов в таблице, чтобы избежать таких проблем. Дополнительные пустые косые черты в пути S3 иногда приводят к ошибкам при выполнении ETL через искру.

...