Работа с клеем AWS для преобразования стола в паркет без необходимости другого гусеничного механизма - PullRequest
0 голосов
/ 24 июня 2019

Можно ли сделать так, чтобы задание Glue переклассифицировало таблицу JSON как Parquet вместо необходимости в другом сканере для сканирования файлов Parquet?

Текущая настройка:

  1. Файлы JSON в многораздельной корзине S3 сканируются один раз в день
  2. Glue Job создает файлы паркета в указанной папке
  3. Запустите ДРУГОЙ сканер, чтобы ВОССТАНОВИТЬ ту же таблицу, которая была создана на шаге 1

Я должен верить, что есть способ преобразовать классификацию таблиц без другого поискового робота (но я уже работал с AWS). Любая помощь очень ценится!

1 Ответ

1 голос
/ 25 июня 2019

Из соображений удобства - 2 сканера - это путь.

Из соображений стоимости - хакерское решение, которое может быть:

  1. Получить таблицу json CREATE TABLEDDL из Афины с помощью команды SHOW CREATE TABLE <json_table>;;

  2. В CREATE TABLE DDL замените имя таблицы и SerDer от json до паркета.Вам не нужны другие свойства таблицы из исходного CREATE TABLE DDL, кроме LOCATION.

  3. Выполните новый CREATE TABLE DDL в Афине.

Дляпример:

SHOW CREATE TABLE json_table;

Оригинальный DDL:

CREATE EXTERNAL TABLE `json_table`(
  `id` int COMMENT, 
  `name` string COMMENT)
ROW FORMAT SERDE 
  'org.openx.data.jsonserde.JsonSerDe' 
...
LOCATION
  's3://bucket_name/table_data'
...

Новый DDL:

CREATE EXTERNAL TABLE `parquet_table`(
  `id` int COMMENT, 
  `name` string COMMENT)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
LOCATION
  's3://bucket_name/table_data'

Вы также можете сделать это с помощью методов Glue api: get_table()> replace> create_table ().

Обратите внимание - если вы хотите запускать его периодически, вам нужно будет обернуть его в сценарий и запланировать его с другим планировщиком (crontab и т. д.) после запуска первого искателя.

...