AWS Glue Crawlers: можно ли вывести изменяющиеся имена столбцов и сопоставить их с предварительно определенным именем столбца в каталоге данных? - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть требование загружать данные повторно из файлов CSV, данные должны помещаться в выходной файл / таблицу с заранее определенной структурой.Однако имена столбцов входного файла в каждой итерации могут незначительно меняться.

Например, имя столбца будет «Serial_Num» на первой итерации и может присутствовать как «Serial_Number» на следующей итерации.

Если я определю таблицу каталога данных с именем столбца, скажем, «Serial_Num», могу ли я кодировать возможные варианты этого имени и сопоставить их все с уже определенным столбцом «Serial_Num»?

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

1 Ответ

0 голосов
/ 24 сентября 2019

В случае, если каждый файл CSV будет иметь первую строку в качестве заголовка, вы можете использовать следующий синтаксис athena для создания необходимой таблицы в каталоге клея:

CREATE EXTERNAL TABLE IF NOT EXISTS {{tablename}} ({{headers}}) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES ( 'escapeChar'='/', 'quoteChar'='\\"', 'separatorChar'=',') 
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' 
LOCATION '{{location}}' TBLPROPERTIES ('skip.header.line.count'='1')"

Замените заполнители {{tablename}}, {{headers}} и {{location}} с соответствующими значениями.

Еще лучшим решением будет прекращение генерации строк заголовка в самом CSV, а затем вы можете наложить свою собственную схему / заголовки наВ довершение всего с помощью команды CREATE EXTERNAL TABLE в Афинах или через Glue Crawler.

...