AWS Athena Создать таблицу с исходной строкой - PullRequest
0 голосов
/ 23 октября 2019

Есть ли способ создать одну таблицу на основе строки json и сохранить всю эту строку json как один столбец.

например: у меня один файл содержит две строки, как показано ниже

{"name": "Tommy", "Age": 16} 
{"name": "Will", "Age": 20}

Я хочу создать одну таблицу, содержащую 3 столбца, [name, age, org_string]. Когда я выбираю org_string из этой таблицы, он просто возвращает исходную строку.

Возможно ли это, и как я могу это сделать?

Или как создать таблицу с двумя столбцами [name, age], но в результате запроса содержится org_string.

Спасибо

1 Ответ

0 голосов
/ 23 октября 2019

Создать таблицу как -

CREATE EXTERNAL TABLE `table_name`(
  `org_string` string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  's3://bucket/location/'

Запросить данные из таблицы как -

SELECT 
JSON_EXTRACT_SCALAR(org_string, '$.name') as name,
JSON_EXTRACT_SCALAR(org_string, '$.Age') as age,
org_string
from table_name
...