AWS Athena Javascript SDK — Создание таблицы из результата запроса (CTAS) — Определенный формат вывода

#amazon-web-services #aws-sdk #amazon-athena

#amazon-веб-сервисы #aws-sdk #amazon-athena

Вопрос:

Я пытаюсь использовать узел AWS JavaScript.JS SDK для создания запроса с использованием AWS Athena и сохранения результатов в таблице в формате AWS Glue с Parquet (не просто CSV-файл)

Если я использую conosle, это довольно просто с запросом CTAS :

 CREATE TABLE tablename
WITH (
    external_location = 's3://bucket/tablename/',
    FORMAT = 'parquet')
    AS
SELECT *
FROM source
  

Но с AWS Athena JavaScript SDK я могу только установить назначение выходного файла с помощью Workgoup или выходных параметров и выполнить базовый запрос select, результаты будут выводиться в файл CSV и не будут должным образом индексироваться в AWS Glue, поэтому он нарушает более масштабный процесс, частью которого он является, если я попытаюсьдля вызова этого запроса с использованием JavaScript SDK я получаю :

 Table properties [FORMAT] are not supported.
  

Я мог бы вызвать этот оператор DDL, используя опцию подключения драйвера Java SDK JDBC.

Кто-нибудь знаком с решением или обходным путем с помощью Javascript SDK для Node.JS ?

Комментарии:

1. Покажите нам свой код, это поможет выяснить, что не так.

Ответ №1:

Нет разницы между запуском SQL, который вы разместили в веб-консоли Athena, AWS SDK для JavaScript, AWS SDK для Java или драйвером JDBC, ни один из них не будет обрабатывать SQL, поэтому, если SQL работает в одном из них, он будет работать во всех. Только служба Athena считывает SQL.

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


Обновление проблема заключается в верхнем регистре FORMAT . Если вы вставляете опубликованный вами код в веб-консоль Athena, он выдает ошибку и не выполняет запрос, но если вы запустите его с помощью CLI или SDK, вы получите сообщение об ошибке, которое вы опубликовали. Вы не запускали тот же SQL в консоли, что и в SDK, если бы у вас был, вы получили бы ту же ошибку в обоих.

Используйте нижний регистр format , и это будет работать.

Это определенно ошибка в Athena, эти свойства не должны учитывать регистр.

Комментарии:

1. Да, вы правы, редактор, форматирующий верхний регистр, перевел мой SQL в «ФОРМАТ», и в этот момент я получил ошибку — не поддерживает ФОРМАТ, и я подумал, что это что-то с SDK, в документе AWS говорится, что только JDBC / ODBC разрешает запросы CTAS, поэтому я думаю, что они исключают прямое использование SDKдля таких типов запросов (например, Javascript) — но, по-видимому, ошибка заключалась в прописных буквах….