带有源字符串的AWS Athena创建表

时间:2019-10-23 04:42:34

标签: amazon-athena

有没有一种方法可以基于json字符串创建一个表,并将整个json字符串保留为一列。

例如:我有一个文件包含两行,如下所示

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

我要创建一个包含3列[name, age, org_string]的表。当我从该表中选择org_string时,它仅返回原始字符串。

有可能吗,我该怎么做?

或者如何创建仅包含两列[name, age]的表,但是查询结果中包含org_string

谢谢

1 个答案:

答案 0 :(得分:0)

创建表为-

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