前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >hive使用笔记

hive使用笔记

作者头像
用户1396155
发布于 2018-08-02 08:03:38
发布于 2018-08-02 08:03:38
1.6K00
代码可运行
举报
文章被收录于专栏:IT探索IT探索
运行总次数:0
代码可运行

1.解析json

使用函数 json_tuple,函数参数用法:

json_tuple(json_object,'key1','key2','keyN')

函数使用方法:

select T1.key1,T1.key2,jf_key1,jf_key2 from table1 T1 

lateral view json_tuple(json_field_name,'key1','key2') jf as jf_key1,jf_key2

2.多个表按key聚合

例如:

A表:设备的rom升级版本

device_id,time,rom_version

B表:设备的app升级版本

device_id,time,app_version

C表:统计设备今日的rom版本,app版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
device_id,rom_version,app_version
HQLSELECT IF(A.device_id is not null,A.device_id,B.device_id) device_id,
IF(A.device_id is not null,A.rom_version,'') rom_version,
IF(B.device_id is not null,B.app_version,'') app_version
FROM (
SELECT device_id,rom_version
FROM device_rom_upgrade
where ds=20180108
) A
full outer join
(
SELECT device_id,app_version
FROM device_app_upgrade
where ds=20180108

)B on (A.device_id=B.device_id)

3.取最近的一条升级记录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT A.device_id,A.rom_version,A.time,A.row_num
FROM
(
SELECT  device_rom_upgrade .*,row_number() over(partition by device_id order by time desc) row_num
FROM device_rom_upgrade
)A where A.row_num=1

4.多个select结果join

例如:统计

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select A.field1,A.field2,B.field1,B.field2  
from 

  (
 select field1,field2
from table1
where condition
         )A
         left join
         (
 
select field1,field2
from table2
where condition

 
         )B

        on (A.field1=B.field1)

注意事项:hive小于2.2.0时, on 里面的条件只能是=或<>,不能是>或<

参见:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Joins

5. hive中解析json数组

例如表A的param字段为json格式的字符串,其json格式如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
"arry_key":
[
{
"arr_obj_key1":"arry_obj_value1",
"arr_obj_key2":"arry_obj_value2"

},
{
}
],
"key1":"value1",
"key2":"value2"
}

解析方法:

1)先用json_tuple取出param

2)使用正则表达式抠出数组中的对象[{},{}],用split把对象分成数组;

3)用explode打成多行

4)最后再通过json_tuple取出数组对象里面的值

select A.key1,A.key2,array_inner_obj.arr_obj_key1,array_inner_obj.arr_obj_key2,p.key1,p.key2 from A lateral view json_tuple(params,'arry_key','key1','key2') p as p_arry,key1,key2 lateral view posexplode(split(regexp_replace(regexp_replace(p.p_arry,'\\\\}\\\\,\\\\{','\\\\}\\\\|\\\\|\\\\{'),'\\\\[|\\\\]',''), '\\\\|\\\\|')) p_arry as p_array_index, array_element lateral view json_tuple(p_arry.array_element,'arr_obj_key1','arr_obj_key2') array_inner_obj as arr_obj_key1,arr_obj_key2 where A.ds=20180110

参考http://blog.csdn.net/lfq1532632051/article/details/63262519

注意事项:

1) hive中使用\转义时要使用4个\,例如"\N" ,需要输入"\\\\N"

2) insert overwrite会先清空原来的数据,再插入新数据。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年12月26日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
hive解析json
我们进行ETL(Extract-Transfer-Load)  过程中,经常会遇到从不同数据源获取的不同格式的数据,其中某些字段就是json格式,里面拼接了很多字段key和指标值value,今天讲一下如何解析出来相关数据。
chimchim
2023/10/17
2.4K0
hive解析json
一文学会Hive解析Json数组(好文收藏)
在Hive中会有很多数据是用Json格式来存储的,如开发人员对APP上的页面进行埋点时,会将多个字段存放在一个json数组中,因此数据平台调用数据时,要对埋点数据进行解析。接下来就聊聊Hive中是如何解析json数据的。
五分钟学大数据
2021/04/29
6.4K0
Hive 中的复合数据结构简介以及一些函数的用法说明
目前 hive 支持的复合数据类型有以下几种: map (key1, value1, key2, value2, ...) Creates a map with the given key/value pairs struct   (val1, val2, val3, ...) Creates a struct with the given field values. Struct field names will be col1, col2, ... named_struct   (name1,
用户1177713
2018/02/24
3.9K0
Hive 中的复合数据结构简介以及一些函数的用法说明
刚发现了 Hive 超赞的解析 Json 数组的函数,分享给你~
大数据的 ETL(Extract-Transfer-Load) 过程的 Transfer 阶段,需要对 json 串数据进行转换“拍平”处理。
Wu_Candy
2022/07/05
8.7K0
刚发现了 Hive 超赞的解析 Json 数组的函数,分享给你~
Hsql函数上
注意: 精度在 hive 中是个很大的问题,类似这样的操作最好通过round 指定精度
全栈程序员站长
2022/09/28
1.9K0
Hsql函数上
常用Hive函数的学习和总结
今天来小结一下工作中经常会使用到的一些Hive函数。关于Hive函数的总结,网上早有十分全面的版本。参考:https://blog.csdn.net/doveyoung8/article/details/80014442。本文主要从最常用和实用的角度出发,说明几个使用频率较高的函数,更注重使用函数组合来解决实际问题而不局限于单个函数的使用。所有数据都是虚构,代码均在本地的Hive环境上都通过测试。本文代码较多,需要各位看官耐心学习,可以收藏备查,欢迎补充和讨论。由于公众号对代码的支持不太友好,您可以在后台回复“hive函数”获取本文的PDF版本,方便阅读。
超哥的杂货铺
2019/12/17
3.5K1
Hive基础09、HQL查询语句
hive -S -e 'select table_cloum from table' -S,终端上的输出不会有mapreduce的进度,执行完毕,只会把查询结果输出到终端上。
红目香薰
2022/11/30
6.2K0
Hive基础09、HQL查询语句
最强最全面的Hive SQL开发指南,超四万字全面解析!
hive -S -e 'select table_cloum from table' -S,终端上的输出不会有mapreduce的进度,执行完毕,只会把查询结果输出到终端上。
五分钟学大数据
2021/12/02
7.9K0
最强最全面的Hive SQL开发指南,超四万字全面解析!
Hive使用必知必会系列
注意:使用insert插入数据时会产生临时表,重新连接后会表会小时,因此大批量插入数据时不建议用insert tips1:在hdfs的hive路径下以.db结尾的其实都是实际的数据库 tips2:默认的default数据库就在hive的家目录
王知无-import_bigdata
2019/05/09
1.8K0
HIVE内置函数
HIVE内置函数 一、内置函数     HIVE除了提供了类似mysql的sql的语法外,还提供了大量内置的函数,方便开发者来调用,编写功能丰富的处理程序。 1、内置运算符 1.关系运算符 运算符 类型 说明 A = B 所有原始类型 如果A与B相等,返回TRUE,否则返回FALSE A == B 无 失败,因为无效的语法。 SQL使用”=”,不使用”==”。 A <> B 所有原始类型 如果A不等于B返回TRUE,否则返回FALSE。如果A或B值为”NULL”,结果返回”NULL”。 A < B 所有原始
云飞扬
2018/05/11
4K0
一文学完所有的Hive Sql(两万字最全详解)
lateral view用于和split、explode等UDTF一起使用的,能将一行数据拆分成多行数据,在此基础上可以对拆分的数据进行聚合,lateral view首先为原始表的每行调用UDTF,UDTF会把一行拆分成一行或者多行,lateral view在把结果组合,产生一个支持别名表的虚拟表。
五分钟学大数据
2021/04/02
3.1K0
亲测!超好用 Hive 内置的 json 解析函数
在大数据 ETL(Extract-Transfer-Load) 过程中,经常需要从不同的数据源来提取数据进行加工处理,比较常见的是从 Mysql 数据库来提取数据,而 Mysql 数据库中数据存储的比较常见方式是使用 json 串进行存储。
Wu_Candy
2022/07/05
3.6K0
Hive个人笔记总结
①保证环境变量中有JAVA_HOME ②基于HADOOP工作,保证环境变量中有HADOOP_HOME ③在环境变量中配置HIVE_HOME,默认hive在启动时,会读取HIVE_HOME/conf中的配置文件
Java架构师必看
2021/05/14
2.7K0
Hive学习
         Hive是基于Hadoop的一个数据仓库工具(离线),可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
曼路
2018/10/18
1.2K0
hive 数组json解析
sql1: select case when ss.col regexp ‘^\{’ and not ss.col regexp ‘\}KaTeX parse error: Got function '\newline' with no arguments as superscript at position 1: \̲n̲e̲w̲l̲i̲n̲e̲’ then concat(’{’,ss.col) when not ss.col regexp ‘^\{’ and not ss.col regexp ‘\}KaTeX parse error: Got function '\newline' with no arguments as superscript at position 1: \̲n̲e̲w̲l̲i̲n̲e̲’ then ss.col end from ( select split(regexp_extract(a.appinfo,’^\[(.+)\]$’,1),’\}\,\{’) as str from ( select ‘[{a:1,b:1},{a:2,b:2},{f:6,k:7}]’ as appinfo ) a ) pp lateral view explode(pp.str) ss as col ;
chimchim
2022/11/13
1.4K0
Hive学习-数据查询语句
hive> SELECT [ALL | DISTINCT] SELECT_expr, SELECT_expr, ... FROM table_reference
顾翔
2024/09/10
1180
Hive学习-数据查询语句
Hive 在多维统计分析中的应用 & 技巧总结
多维统计一般分两种,我们看看 Hive 中如何解决: 1、同属性的多维组合统计 (1)问题: 有如下数据,字段内容分别为:url, catePath0, catePath1, catePath2, unitparams https://cwiki.apache.org/confluence 0 1 8 {"store":{"fruit":[{"weight":1,"type":"apple"},{"weight":9,"type":"pear"}],"bicycle":{"price":1
用户1177713
2018/02/24
1.9K0
深入理解Hive【Hive架构介绍、安装配置、Hive语法介绍】
4、底层支持多种不同的执行引擎【MR/Tez/Spark】1.x默认为MR     2.x默认为Spark   当然也可以设置为Tez
Java架构师必看
2021/05/14
3.3K0
深入理解Hive【Hive架构介绍、安装配置、Hive语法介绍】
Hive学习-lateral view 、explode、reflect和窗口函数
然后挂了FAILED: SemanticException [Error 10081]: UDTF's are not supported outside the SELECT clause, nor nested in expressions
顾翔
2024/09/10
4530
Hive学习-lateral view 、explode、reflect和窗口函数
Hive 表存取 json 数据
1. 建表 create table json_temp( appkey string, jsondata string ) row format delimited fields terminated by '|' stored as textfile ; 2. 导入数据 appkey001|{"count":2,"usage":91273,"pkg":"com.example.gotest"} appkey001|{"count":234,"usage":9876
北漂的我
2019/05/29
1.7K0
相关推荐
hive解析json
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档