有没有一种方法可以基于json字符串创建一个表,并将整个json字符串保留为一列。
例如:我有一个文件包含两行,如下所示
{"name": "Tommy", "Age": 16}
{"name": "Will", "Age": 20}
我要创建一个包含3列[name, age, org_string]
的表。当我从该表中选择org_string
时,它仅返回原始字符串。
有可能吗,我该怎么做?
或者如何创建仅包含两列[name, age]
的表,但是查询结果中包含org_string
。
谢谢
答案 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