You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在HIVE中查询JSON格式数据并提取指定date字段

Hive 查询JSON格式数据操作方法

通用查询方案

Hive查询JSON格式数据分两种常见使用场景:

场景1:表存储的是整行JSON字符串

如果你的表是直接将完整JSON作为单个字符串字段存储,比如表名为raw_json_table,存储JSON的字段名为json_content,可以使用Hive内置的get_json_object函数提取指定字段:

  • 提取date字段的查询语句:
SELECT get_json_object(json_content, '$.date') AS `DATE` FROM raw_json_table;

其中$.date就是JSON中对应date字段的路径,嵌套字段可以按层级写,例如$.user.base.age。

场景2:通过JSON SerDe建表映射字段

如果需要频繁查询JSON中的多个字段,推荐直接使用JSON SerDe在建表时就将JSON的key映射为Hive表的字段,后续可以像查询普通表一样操作:

  1. 建表语句示例:
CREATE EXTERNAL TABLE IF NOT EXISTS app_json_data (
    space STRING,
    app STRING,
    profile STRING,
    date STRING
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION '/你的HDFS路径/存放JSON数据的目录';
  1. 查询date字段语句:
SELECT date AS `DATE` FROM app_json_data;

输出格式适配(首行显示DATE:)

如果你需要输出结果第一行显示DATE:,可以用以下两种方式实现:

  • 方式1:SQL层面拼接固定行
-- 场景1适配
SELECT 'DATE:' AS `DATE`
UNION ALL
SELECT get_json_object(json_content, '$.date') AS `DATE` FROM raw_json_table;

-- 场景2适配
SELECT 'DATE:' AS `DATE`
UNION ALL
SELECT date AS `DATE` FROM app_json_data;
  • 方式2:开启Hive客户端表头显示
    在执行查询前先执行配置命令:
set hive.cli.print.header=true;

之后执行任意查询语句都会自动显示字段别名作为表头,你将查询的字段别名设为DATE即可输出符合要求的格式。

内容的提问来源于stack exchange,提问作者user3461502

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 18:12:01