AWS Glue API не распознает разделы с дефисом - PullRequest
0 голосов
/ 31 августа 2018

У меня есть данные в S3, которые разбиты по категориям и дате следующим образом:

s3://mybucket/category=1/date=2018-08-30/data1.json
s3://mybucket/category=1/date=2018-08-31/data2.json
s3://mybucket/category=2/date=2018-08-30/data3.json
s3://mybucket/category=2/date=2018-08-31/data4.json

После запуска искателя в таблице метаданных у меня есть два ключа секционирования: один для category, другой для date. Я хочу получить разделы, которые соответствуют определенным ключам, используя GetPartitions API , поэтому я начал экспериментировать с CLI AWS. Если я запускаю эту команду:

aws glue get-partitions --database-name mydb --table-name mytable --expression "category=1" --region us-west-2

Я успешно получил раздел, как и ожидалось. Однако я попробовал следующую команду:

aws glue get-partitions --database-name mydb --table-name mytable --expression "category=1 AND date=2018-08-30" --region us-west-2

и ответ был

Произошла ошибка (InvalidInputException) при вызове Операция GetPartitions: неподдерживаемое выражение '2018 - 08 - 30'

Другая команда, выдавшая эту ошибку, была

aws glue get-partitions --database-name mydb --table-name mytable --expression category=1\ AND\ date=2018-08-30 --region us-west-2

Я также попытался изменить вызов с помощью следующей команды:

aws glue get-partitions --database-name mydb --table-name mytable --expression "category=1 AND date=2018\-08\-30" --region us-west-2

, который дал мне ошибку

Произошла ошибка (InvalidInputException) при вызове операции GetPartitions: лексическая ошибка в строке 1, столбец 35. Обнаружено: "\" (92), после: ""

Может ли API GetPartitions обрабатывать выражения для разделов, содержащих дефисы? Если да, то каков правильный синтаксис?

1 Ответ

0 голосов
/ 05 сентября 2018

Разделы, которые изначально были созданы сканером в AWS Glue, будут иметь тип String в каталоге метаданных. Хотя некоторые из моих категорий содержали дефисы, они были в uuids (т. Е. category=so36-fkw1-...), поэтому они не интерпретировались как выражения. С другой стороны, даты содержат только числовые символы и -, который был корнем проблемы. Я смог исправить это, заключив даты в одинарные кавычки следующим образом:

aws glue get-partitions --database-name mydb --table-name mytable --expression category=1\ AND\ date=\'2018-08-30\' --region us-west-2

...