Hive
商俊超
大数据猿人。努力不被开猿节流!
展开
-
Hive-自定义函数
1 创建maven工程 添加依赖 <dependencies> <!-- https://mvnrepository.com/artifact/org.apache.hive/hive-exec --> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec<原创 2021-01-08 14:26:52 · 72 阅读 · 0 评论 -
Hive-功能扩展,使用反射调用java类的方法
1 编写java程序public class Test01 { public String test01(String str , int i){ return str.toLowerCase()+i*10; }}2 打包 3 上传到linux系统4 add jar /test01.jar 或者将jar包添加到 $HIVE_HOME/lib/目录下add jar /data/test01.jar;5 调用方法se...原创 2020-12-03 23:27:58 · 164 阅读 · 0 评论 -
Hive-集合数据类型
struct 类似于java对象 pojo类array 数组map 键值对创建集合数据类型的表songsong,bingbing_lili,xiao song:18_xiaoxiao song:19,hui long guan_beijingyangyang,caicai_susu,xiao yang:18_xiaoxiao yang:19,chao yang_beijingcreate table tb_user(name string,fri...原创 2020-12-03 22:56:52 · 107 阅读 · 0 评论 -
Hive-日期函数
目录1 trunc(date,*)2 date_add(start_date, num_days)3date_format(date/timestamp/string, fmt)4date_sub(start_date, num_days)5datediff(date1, date2)6day(param)7month(param)8 year(param)9 dayofweek(param)10 dayofmonth(param...原创 2020-12-03 21:59:44 · 275 阅读 · 0 评论 -
Hive-row_number()、rank()、dense_rank()
1 row_numberrow_number() over(partition by c1 order by c2)表示根据c1分组,在分组内部根据c2排序,而此函数计算的值就表示每组内部排序后的顺序编号(该编号在组内是连续并且唯一的)。仅仅定义组内的数据进行编号表信息select *,row_number()over(partition by name order by login_date)fromtb_account;2 rank()编号的时候 排序...原创 2020-12-03 20:48:53 · 135 阅读 · 0 评论 -
Hive-窗口函数、窗口大小
简介在进行分组聚合以后 , 我们还想操作集合以前的数据 使用到窗口函数相关函数说明OVER():指定分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变而变化CURRENT ROW:当前行current rownPRECEDING:往前n行数据n precedingnFOLLOWING:往后n行数据n followingUNBOUNDED:起点,UNBOUNDED PRECEDING 表示从前面的起点, UNBOUNDEDFOLLOWING表示到...原创 2020-12-02 22:32:50 · 1297 阅读 · 0 评论 -
Hive-行转列、列转行
行转列将多行的数据合并到一列中collect_set -- 去重collect_list 这两个都是聚合函数 将收集的多行数据聚集成一个数组集合concat 拼接 参数是可变参数 拼接字符串concat_ws 参数一 拼接符 参数二 可变个数的字符串 数组表数据select name , collect_list(typ) from tb_movie group by name;列转行将列的数据炸裂成多行表数据selec...原创 2020-12-02 20:54:55 · 68 阅读 · 0 评论 -
Hive-部分函数解析
1 array(ele1 , ele2...)创建数组 数组是hive中的一种集合数据类型 和 java中的数组一样select array(1,2,3,4) ;select array(1,2,3,4)[0] ;2array_contains(arr , element)查看arr数组中是否含有element字段select array_contains(array('a','ab','abc','abcd'),'aa') ;select...原创 2020-12-02 20:10:41 · 185 阅读 · 0 评论 -
Hive-分桶表 、抽样查询
简介对Hive(Inceptor)表分桶可以将表中记录按分桶键(字段)的哈希值分散进多个文件中,这些小文件称为桶。 分区针对的是数据的存储路径;分桶针对的是数据文件。 分区提供一个隔离数据和优化查询的便利方式。不过,并非所有的数据集都可形成合理的分区,特别是之前所提到过的要确定合适的划分大小这个疑虑。 分桶是将数据集分解成更容易管理的若干部分的另一个技术。优点1,更快,桶为表加上额外结构,链接相同列划分了桶的表,可以使用map-side join更...原创 2020-12-01 21:43:47 · 496 阅读 · 0 评论 -
Hive-排序(全局排序、区内数据排序 )-Order By、Distribute By、Sort By、Cluster By
全局排序全局最终结果排序ASC(ascend): 升序(默认)DESC(descend): 降序原表信息查看订单信息 并按照消费升序排列select * from tb_orders order by money asc;查看订单信息 并按照消费降序排列select * from tb_orders order by money desc;按照别名排序查看订单信息 并按照消费钱数的2倍降序排列select *,money*2 as原创 2020-12-01 20:57:17 · 653 阅读 · 0 评论 -
Hive-case when和if
case when表信息selectdname ,sum(case gender when '男' then 1 else 0 end) M ,sum(case gender when '女' then 1 else 0 end) Ffromtb_emp group by dname ;结果ifselectdname ,sum(if(gender='男',1,0)) M ,sum(if(gender='女',1,0)) Ffromtb_emp gr原创 2020-12-01 20:10:49 · 1113 阅读 · 0 评论 -
Hive-关联查询
关联查询原表信息 SQL语句逻辑执行顺序select --------------(4fromtb_name----- (1where---------(2group by -----(3having --------(5order by -----(6limit-----------(7join on避免了笛卡尔积select *from tb_a join tb_bontb_a.id = tb_b.id;结果...原创 2020-12-01 20:04:23 · 2606 阅读 · 0 评论 -
Hive-分区表
目录为什么要有分区表?静态分区简介条件一级静态分区hsql演示创建多级分区表动态分区简介步骤hsql操作1. 建普通表2.导入数据3.分区表4.开启动态分区支持5.通过select insert的方式导入数据为什么要有分区表?将表的数据以查询维度为依据分文件夹管理 , 当根据这个维度查询的时候减少数据的检索范围 比如有一个log表 所有的日志数据在log表目录下 ,假如想查20201130日的数据 , 只能遍历所有的...原创 2020-11-30 20:55:47 · 228 阅读 · 0 评论 -
Hive-数据的导出
1.export方式export table tb_name to 'HDFS_PATH';表中的信息export table tb_log to '/log';导出后 有元数据 还有表数据2.如果数据是普通的文本数据 在shell客户端使用get下载数据在hdfs中查看数据hdfs dfs -get /user/hive/warehouse/tb_local/location.txt3. 使用sql语句3.1hive ...原创 2020-11-30 20:21:16 · 113 阅读 · 0 评论 -
Hive-导入数据的方式
1 建表的时候指定location 结构化数据的位置文件夹 (外部表)create external table tb_t1( id int, name string, age int, gender string)row format delimited fields terminated by ","location "hdfs://linux01:8020/data/log";2可以将结构化数据直接put到表目录中 mv到指定的目录表的原数...原创 2020-11-29 14:30:33 · 183 阅读 · 0 评论 -
Hive建表语法-内部表、外部表
内部表写语句时未被external修饰的表是内部表特点:当删除该表时,表的元数据也会跟着被删除,会影响其他使用该数据的表代码演示1. 创建一个数据2. 将本机上的文件上传到hdfs中去3.分别创建两个表 tb_t1 tb_t2create table tb_t1( id int, name string, age int, gender string)row format delimited fi...原创 2020-11-28 21:54:14 · 441 阅读 · 0 评论 -
Hive-数据类型和建表语法
数据类型TINYINT 1byte有符号整数 20SMALLINT 2byte有符号整数 20INT ** 有符号整数 20BIGINT** 8byte有符号整数 20BOOLEAN 布尔类型,true或者false TRUE FALSEFLOAT 单精度浮点数 3.14159DOUBLE ** 双...原创 2020-11-28 21:14:24 · 997 阅读 · 0 评论 -
IDEA远程连接Hive过程
IDEAl远程连接Hive过程1. 打开idea2.配置pom文件中的依赖<dependencies> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>1.2.1</vers.原创 2020-11-28 21:00:53 · 1435 阅读 · 0 评论 -
Hive简介和安装
什么是Hive?简介 hive是基于Hadoop的一个数据仓库工具,并不是一个数据库,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive是十分适合数...原创 2020-11-28 20:27:41 · 147 阅读 · 0 评论