Hive 查询 JSON 格式数据

添加 Jar 包

JSON SERDE 实现类所在 JAR 在 hcatalog 中,需要将其添加到 classpath 中:

ADD JAR $HIVE_HOME/hcatalog/share/hcatalog/hive-hcatalog-core-2.0.1.jar  

创建表

创建 user_json 表,建表语句如下:

CREATE TABLE IF NOT EXISTS user_json  
(
    id INT, 
    name VARCHAR(32), 
    sex CHAR(1), 
    birthday DATE
) 
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'  
STORED AS TEXTFILE  

ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' 指定了非内置 SERDE 的 Java 包路径

测试

测试数据:

{"id": 0, "name": "Tom", "sex": "m", "birthday": "2016-12-20"}
{"id": 1, "name": "Jerry", "sex": "f", "birthday": "2016-12-22"}

加载数据:

LOAD DATA INPATH '/user/hive/user.json' INTO TABLE user_json  

执行查询:

SELECT * FROM user_json  

查询结果:

0       Tom     m       2016-12-20  
1       Jerry   f       2016-12-22