如果有时候遇到数据源是json的格式(比如直接读取mongoDB的数据), hive解析就要麻烦一点, 主要有以下2种方法:
1、将json以字符串的方式整个入Hive表,然后使用LATERAL VIEW json_tuple的方法(相当于生成json串的模型),获取所需要的列名。 这种方法还是比较麻烦,尤其是字段多的时候, 第二种方法用起来更方便.
2、使用第三方的SerDe将json拆成各个字段入Hive表里, 我使用的是hive1.2.1可以正常使用, 下载地址:http://download.csdn.net/download/ls386239766/8662797
# 添加jar包
hive> add jar /usr/local/hive/lib/json-serde-1.3-jar-with-dependencies.jar;
hive>
# 创建hive表
CREATE TABLE test_json
(
id BIGINT,
text STRING,
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.JsonSerde'
STORED AS TEXTFILE
;
LOAD DATA LOCAL INPATH "test.json" OVERWRITE INTO TABLE test_json;
如果觉得每次运行都要加载这个jar包比较麻烦, 可以把jar包路径添加到hive-env.sh里.