Афина SQL создать таблицу с текстовыми данными - PullRequest
0 голосов
/ 10 марта 2020

Ниже показано, как выглядят данные

Flight Number: SSSVAD123X Date: 2/8/2020 1:04:40 PM    Page[s] Printed: 1 Document Name: DownloadAttachment  Print Driver: printermodel (printer driver) 

Мне нужна помощь в создании таблицы создания Athena SQL в формате ниже

Flight Number  Date                  Pages Printed  Document Name          Print Driver 
SSSVAD123X     2/8/2020 1:04:40 PM   1              DownloadAttachment     printermodel

это ново для меня, любое направление к решению будет работать

1 Ответ

0 голосов
/ 21 марта 2020

Вы можете использовать регулярное выражение serde для анализа ваших файлов. Это зависит от формы ваших данных. Вы предоставляете только одну строку, поэтому предполагается, что каждая строка в ваших файлах данных выглядит одинаково.

Вот документация Athena для этой функции: https://docs.aws.amazon.com/athena/latest/ug/apache.html

Вы должно быть в состоянии сделать что-то вроде следующего:

CREATE EXTERNAL TABLE flights (
  flight_number STRING,
  `date` STRING,
  pages_printed INT,
  document_name STRING,
  print_driver STRING
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
  "input.regex" = "^Flight Number:\\s+(\\S+)\\s+Date:\\s+(\\S+)\\s+Page\\[s\\] Printed:\\s+(\\S+)\\s+Document Name:\\s+(\\S+)\\s+Print Driver:\\s+(\\S+)\\s+\\(printer driver\\)$"
 ) LOCATION 's3://example-bucket/some/prefix/'

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

Поскольку у меня нет доступа к вашим данным К сожалению, я не могу проверить регулярное выражение, поэтому в нем могут быть ошибки. Надеюсь, этого примера достаточно, чтобы вы начали.

...