Как использовать метаданные AWS Glue в запросах с DynamoDB-Athena Connector - PullRequest
1 голос
/ 28 мая 2020

Я пытаюсь использовать систему запросов Athena Federated со встроенным Коннектором Athena-DynamoDB . У меня есть настройка коннектора, поэтому я могу выполнять такие запросы:

SELECT * FROM "lambda:<connector>".[Something]."DynamoDB Table Name"

Однако с некоторыми таблицами я получаю следующую Java ошибку коннектора:

GENERIC_USER_ERROR: Обнаружено исключение [null] из вашей LambdaFunction [], выполненное в контексте [получение метаданных] с сообщением [Неожиданная ошибка при выполнении Lambda-функции]

Я считаю, что эта ошибка возникает из-за ограниченного способность выводить схему таблицы, заставляя ее вызывать исключение нулевой ссылки при обнаружении отсутствующих данных в таблице, как указано здесь . Поэтому я пытаюсь использовать предложенное решение:

В качестве обходного пути вы можете определить схему этой таблицы DDB в Glue. Это приведет к тому, что коннектор обойдет его возможность вывода схемы и, возможно, остановит ошибку, чтобы вы могли продолжить свою работу, пока мы ее исследуем.

Я установил склеивающий сканер, который сканирует таблицу, в которой есть проблема, Я запустил поисковый робот glue, и метаданные таблицы доступны для просмотра в консоли Glue. Однако я не понимаю, как на самом деле использовать эти метаданные вместо вывода схемы соединителя. Любые запросы к ошибочной таблице возвращают те же ошибки.

Другая информация, которая может быть актуальной, но я не уверен:

  1. Имя таблицы в Dynamo состоит из заглавных букв, например это: MyTable. Это будет заменено на клей для всех строчных букв, например: mytable
  2. Таблица содержит столбцы с заглавными буквами в имени, например: MyCol1, MyCol2, et c. В них вносятся изменения в клей для всех строчных букв, например: mycol1, mycol2, et c
  3. Все ресурсы были разделены с помощью CloudFormation вместо консоли. Если что-то нужно разделить, я бы предпочел сделать это таким образом, а не через консоль.
  4. [Something] в приведенном выше запросе - это имя базы данных, но похоже, что любой произвольный ввод работает. Я подозреваю, что мне, возможно, придется указать это, чтобы запросы работали с клеем, но это всего лишь предположение, и ничего из того, что я пробовал до сих пор, не сработало
...