使用配置单元JSON SerDe添加数据查询
我正在使用hive,需要添加json格式的数据。我使用图书馆。它从文件加载配置单元中的数据使用配置单元JSON SerDe添加数据查询,json,hive,hiveql,Json,Hive,Hiveql,我正在使用hive,需要添加json格式的数据。我使用图书馆。它从文件加载配置单元中的数据 ~$ cat test.json {"text":"foo","number":123} {"text":"bar","number":345} $ hadoop fs -put -f test.json /user/data/test.json $ hive hive> CREATE DATABASE test; hive> CREATE EXTERNAL TABLE test (
~$ cat test.json
{"text":"foo","number":123}
{"text":"bar","number":345}
$ hadoop fs -put -f test.json /user/data/test.json
$ hive
hive> CREATE DATABASE test;
hive> CREATE EXTERNAL TABLE test ( text string )
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION '/user/data';
hive> SELECT * FROM test;
OK
foo 123
bar 345
但我需要从查询中加载数据,如:
insert into table test values {"text": "abc", number: 666}
谁知道怎么做到这一点呢?SerDe实际上是用于从包含数据的文件中读取数据的外部表。因此,它不会帮助您直接插入json数据,您作为示例给出的插入查询也不会这样工作。我建议您将数据写入hdfs上的文件,并在包含该文件的文件夹上创建一个外部表,或者解析传入的数据,以便将其作为列插入。SerDe实际上是用于从包含数据的文件中读取数据的外部表。因此,它不会帮助您直接插入json数据,您作为示例给出的插入查询也不会这样工作。我建议您将数据写入hdfs上的文件,并在包含该文件的文件夹上创建一个外部表,或者解析传入的数据,以便将其作为列插入。但是,如果有人在寻找答案,这个问题似乎很老: 我尝试了以下另一种方法:
创建表测试(文本字符串)代码>
将路径'path/test.json'中的数据加载到表test中代码>
插入表测试值(“{'text':'abc','number':666}”)代码>
select get_json_object(str,'$.text') as text1, get_json_object(str,'$.number') as number1 from test;
然而,如果有人在寻找答案,这个问题似乎很老: 我尝试了以下另一种方法:
创建表测试(文本字符串)代码>
将路径'path/test.json'中的数据加载到表test中代码>
插入表测试值(“{'text':'abc','number':666}”)代码>
select get_json_object(str,'$.text') as text1, get_json_object(str,'$.number') as number1 from test;