AWS Glue - как изменить имена столбцов в таблице каталога Glue с помощью BOTO3?

Я использую AWS Glue Crawlers для чтения из zip-файлов S3 (без заголовка) и заполнения каталога Glue.

По умолчанию столбцы имеют имена: col_0, _2 _...

Как изменить имена этих столбцов, например, модуль python boto3 и напрямую взаимодействовать с каталогом AWS Glue?

Есть ли пример фрагмента для этого?

Спасибо.


person Joe    schedule 03.12.2019    source источник
comment
Думаю, здесь есть небольшая информация boto3.amazonaws.com/v1/documentation/api/latest/reference/   -  person GiovaniSalazar    schedule 03.12.2019


Ответы (1)


Вы можете попробовать вытащить таблицы и обновить имена. Вот пример того, что я бы сделал.

Сначала мы попробуем получить таблицу:

    database_name = 'ENTER TABLE NAME'
    table_name = 'ENTER TABLE NAME'
    response = self.glue_client.get_table(DatabaseName=database_name,table_name=Name)
    old_table = response['Table']

Затем мы обновим таблицу значениями, которые мы хотим изменить. Новая таблица, которую мы создаем, может иметь только определенные поля, чтобы update_table ее приняла. Итак, сделаем следующее.

    field_names = [
      "Name",
      "Description",
      "Owner",
      "LastAccessTime",
      "LastAnalyzedTime",
      "Retention",
      "StorageDescriptor",
      "PartitionKeys",
      "ViewOriginalText",
      "ViewExpandedText",
      "TableType",
      "Parameters"
    ]
    new_table = dict()
    for key in field_names:
     if key in old_table:
      new_table[key] = old_table[key]

Теперь, когда у нас есть обновленная таблица, мы можем управлять именами столбцов. Вот пример изменения просто col_0 на new_col

    for col in new_table['StorageDescriptor']['Columns']:
      if col['Name'] == 'col_0':
        col['Name'] = 'new_col' 
    response=self.glue_client.update_table(DatabaseName=database_name,TableInput=new_table)

Надеюсь, это поможет!

person Ash_s94    schedule 05.12.2019