可以用如下语句在hive上实行创表,然后hbase上会出现对应的表 ? ? hbase上建立了 ps:CREATE TABLE basketball2(num int,team string,state string) STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler :key,player:team,player:state”) TBLPROPERTIES (“hbase.table.name” = “basketball2”); create table后面跟hive
HiveSQL经典优化案例一: 1.1 将要执行的查询(执行了 1个多小时才出结果): SELECT dt as DATA_DATE,STRATEGY,AB_GROUP,SOURCE, count 1.3 优化思路:既然将要执行的查询是按照 dt, strategy, ab_group, source 这4个字段分组, 那么在建表的时候,就按这四个字段中的N个(1 或 2 或 3 或4)个字段组合分区 1.4 先看每个字段将会有多少分区(因为 Hive 表分区也不宜过多,一般一个查询语句涉及到的 hive分区 应该控制在2K内) jdbc:hive2://ks-hdp-master-01.dns.rightpad HiveSQL经典优化案例二: 问题描述:一个复杂的SQL,查询执行一段时间后报错:基本上是查不出来; 分析函数对于大表来说不是 hive的强项,这个时候我们将其分解成很多子集,并且合理利用 hive 优化后的SQL,性能提升了4倍多。 ? ? ? 版权声明: 本文为大数据技术与架构整理,原作者独家授权。未经原作者允许转载追究侵权责任。 编辑|冷眼丶
Hive综合案例 本案例对视频网站的数据进行各种指标分析,为管理者提供决策支持. = split.length - 1) { //拼接倒数第一个 builder.append(split[i]); //相关id1&先关id2&相关id3&相关id4 job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(NullWritable.class); //本案例中没有 0:1);; } } 四、准备工作 1、 创建 hive 表 创建表:youtubevideo_ori,youtubevideo_user_ori 创建表:youtubevideo_orc t_catetory as category_name) t2 group by category_name order by hot_with_views desc; 4、
行转列: 4. 列转行 5. 综合练习 6. 查询顾客的购买明细及月购买总额 7. 将每个顾客的cost按照日期进行累加 8. 求明细,以及每个月有哪些顾客来过 9.
介绍Hive查询中的行列转换的用法 1. 案例一:求数学成绩比语文成绩好的学生的ID (1) 需求分析 现有 hive 表 score, 内容如下: hive> select * from score; 1 1 yuwen 43 2 t2中的数据: 1 43 55 2 77 88 3 98 65 --(3) SELECT sid FROM t2 WHERE shuxue > yuwen; 结果: 1 2 2.案例二 :销售表的行列转换 (1) 需求 现有hive表sales,内容如下: hive> select * from sales; sales.y sales.season sales.sale 1991 案例三:学生成绩表的列转行 (1) 需求 有如下学生成绩表score: id sname math computer english 1 Jed 34 58
---- 介绍Hive查询中数值累加的思路的方法 1. 需求分析 现有 hive 表 record, 内容如下: hive> select * from record; OK A 2015-01 5 A 2015-01 15 B 2015-01 5 A 2015-01 8 B 2015-01 25 A 2015-01 5 A 2015-02 4 A 2015-02 方法二:使用Hive窗口函数max()、sum() select userid, month, count, sum(count) over(partition by userid order by
/app/software/hive/exercise/ 4 total 12 5 -rw-rw-r-- 1 yun yun 81 Jul 18 17:44 course.dat 6 -rw-rw-r ]$ cat /app/software/hive/exercise/sc.dat 16 95001,1,81 17 95001,2,85 18 95001,3,88 19 95001,4,70 20 ://mini01:10000> set mapreduce.job.reduces = 2; 3 No rows affected (0.007 seconds) 4 0: jdbc:hive2: 数据准备 1 [yun@mini01 exercise2]$ cat /app/software/hive/exercise2/a.dat 2 1,a 3 2,b 4 3,c 5 4,d b; 1 # 表数据查询 2 0: jdbc:hive2://mini01:10000> select * from a; 3 +-------+---------+--+ 4 | a.id
Import 数据到指定 Hive 表中 注意:先用 export 导出后,再将数据导入。 hive (default)> import table student2 partition(month='201709') from '/user/hive/warehouse/export/student .txt; Hive Shell 命令导出 基本语法:(hive -f/-e 执行语句或者脚本 > file) [hadoop@hadoop102 hive]$ bin/hive -e 'select * from default.student;' >/opt/module/datas/export/student4.txt; 5.Export 导出到 HDFS 上 (defahiveult)> 只能删除管理表,不能删除外部表中数据 hive (default)> truncate table student;
前面我所用的表hive_table其实用hive查询时查得还是hdfs上的数据,那我们用mysql到底是存储的什么,元数据到底是什么? 元数据其实是数据的类型和我们用hive怎么拆分这个表的信息的合集,比如说我去查看我的mysql上的元数据到底长什么样 (1)先进入hive数据库(此数据库事先已经创建好,在hive的配置文件中我们已经设置好 (2)进入hive数据库 ? (3)查看此数据库里面的表 ? DBS表是一个关键的表,查看它: ? 这里就可以看见这份数据在hdfs中的位置 TBLS表 ? ?
数据说明 (1) dept表 hive> select * from dept; # deptno(部门编号) dname(部门名称) loc(部门所在地区) 10 SALES CHICAGO 40 OPERATIONS BOSTON (2) emp表 hive as count_emp from emp group by job order by count_emp desc; # 结果 job count_emp SALESMAN 4 CLERK 4 MANAGER 3 ANALYST 2 PRESIDENT 1 (4) 查询入职最早的员工 select emp.ename, emp.hiredate hiredate) as min_date from emp) tmp on emp.hiredate = tmp.min_date; # 结果 SMITH 1980-12-17 # 注意,以下SQL在hive
不明就里的读者可以看上一篇: Hive 的入门级 Group By 全案例 昨晚发文之后,有读者陆陆续续在星球发问了,脚本到底该怎么写? 环境: Hive: 2.7.7 Oracle SQL Developer Cloudera JDBC Driver 案例 - 1 : Group by 的常规化应用 select schema_id image 案例 - 2 : Group by 之 Grouping Sets 应用 select schema_id , type_desc , count(object_id type_desc grouping sets((schema_id,type_desc),schema_id,type_desc,()) order by schema_id ,type_desc 案例 - 4 : Group by 之 with rollup 这是一个上卷的操作,唯一一个有方向性的分组聚合操作 select schema_id , type_desc , count
题目要求 现有hive表temp,其中只有一个字段(temp_record string),每一行代表某一天的气温,比如,2014010114代表,2014年1月1日的气温为14度,表中数据如下: hive 2010010216 2010010317 2010010410 2010010506 2015010649 2015010722 2015010812 2015010999 2015011023 要求:用hive 参考答案 --(1) create table temp_column as SELECT substring(temp_record, 1, 4) year, substring(temp_record , 5, 4) day, substring(temp_record, 9) temp FROM temp; /* temp_column表中数据: 2014 0101 14 2014 temp_index表中数据: 2001 0105 29 1 2001 0101 16 2 2001 0102 12 3 2001 0104 11 4
hive SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/root/bigdata/hive-3.1.3/lib/log4j-slf4j-impl-2.10.0.jar! SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] Hive Session ID = f0d4bf60 /hive-log4j2.properties Async: true Hive Session ID = 959e0cda-f8eb-4fc1-b798-cb5175e735d2 Hive-on-MR 以上就是Hive的完整搭建过程,小伙伴们就可以欢快地开始使用Hive了。 2.Hive应用案例 本案例对视频网站的数据进行各种指标分析,为管理者提供决策支持。
数据说明 (1) student表 hive> select * from student; # 学生ID 学生姓名 性别 年龄 所在系 # sid sname 95013 Matthew male 21 CS 95014 Nicholas female 19 CS ...... (2) course表 hive Physics 5 Chemistry 6 Biology (3) sc表 hive> select * from sc; # 学生ID 课程ID 成绩 95002 4 95004 4 95005 4 95006 6 95007 4 95011 4 95012 4 95013 4 95015 4 95018 4 95019 5 95022 4 */ (3) hive的order by/sort by/distribute by <1> 查询学生信息,结果按学号全局有序 select * from student
熟悉 sql server 一定不陌生,其实就是从 sql server 导了一张系统表 sys.objects 到 Hive 里面。 具体方法可以参考这里: 使用 Sqoop 将 30W+ MySQL 数据导入 Hive 这是 Hive 的第一篇公开文,讲解 group by 用法。 其余的文章存着,大家热情起来了,我再慢慢放。 扯远了,回归正题,这里是 5 道 Hive 的 group by 应用题,大家有兴趣先做着。我会在星球里公布正式答案。 已知表结构如下: ? by 子选项案例。 看这里: Spark SQL 与 Hive 的第一场会师 Spark 高难度对话 SQL Server 后记 周末两三事儿:大数据专栏以及百题SQL学习营
Hive之CLI 参数 CLI,command line interface,最常用的命令行接口。 —hiveconf hive CLI 中进行set property=value 操作demo -d hive -d col=id --database hello # 指定变量和数据库名称hello # 使用变量 hive> select '${col}' from table2 limit 3; # 显示的是id名称 hive> select ${col} from table2 limit 3; # 显示的是id的具体值 hiveconf root: hive --hiveconf mapred.reduce.tasks=10 hive> set mapred.map.tasks= 10; -e hive -e "select * from table2 where id > 4" --database hello; Hive之Beeline beeline简介 beeline是hiveserver2
Hive提供了一个严格模式,可以防止用户执行“高危”的查询。 通过设置属性hive.mapred.mode值为默认是非严格模式nonstrict 。 开启严格模式需要修改hive.mapred.mode值为strict,开启严格模式可以禁止3种类型的查询。 <property> <name>hive.mapred.mode</name> <value>strict</value> <description> The mode in which the Hive operations are being performed. 不幸的是,Hive并不会执行这种优化,因此,如果表足够大,那么这个查询就会出现不可控的情况。 本次的分享就到这里了,受益的小伙伴们记得点赞加关注哟٩(๑>◡<๑)۶
00 序言 本篇文章为Hive系列的第四篇,之前三篇内容,感兴趣的同学可以戳蓝字部分: 第一篇:Hive常用函数及避坑点汇总 第二篇:Hive常用十大应用技巧 第三篇:Hive运行原理详解 本篇将接着第三篇文章 ,在了解Hive运行原理的基础上,分享一些「Hive调优的技巧」。 第二板斧:代码中需要对空值做处理 基于Hive运行原理,相同Key的数据会在同一个Reduce中进行处理。 如下图: 第四板斧:设置并行执行 Hive查询是通过多个阶段执行的,如果阶段不是相互依赖,是可以并行实现的,从而提高运行效率。 set hive.exec.parallel.thread.number=16; --单SQL最大并行度,默认为8。
,关闭Hive的模拟功能 [t8w17ivo7k.jpeg] 2.修改LDAP相关配置,通过这里可以进行全局配置,配置后所有的HiveServer2服务均使用该配置 [blu7n4uhc0.jpeg] 4.Hive集成OpenLDAP验证 ---- 1.faysontest用户不存在与操作系统,却存在于OpoenLDAP,可以使用id查看到该用户 操作系统/etc/passwd文件不存在faysontest 2.通过beeline使用faysontest用户分别登录两个HiveServer2服务 都输入错误的用户的密码登录HiveServer2 [phazsatg4z.jpeg] [w4fz8l03yr.jpeg ] 进入HiveServer2的配置页面 [mgu4ld22dp.jpeg] 3.添加如下配置,提示:代码块部分可以左右滑动查看噢 <property> <name>hive.server2.authentication [583bcqdp4x.gif] 原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操
配置Metastore到MySql 2.1 在/opt/module/hive/conf目录下创建一个hive-site.xml 在这个时候就可以转换成hadoop用户了 [bigdata@hadoop001 mysql-connector-java-5.1.27]$ cd /opt/module/hive/conf [bigdata@hadoop001 conf]$ vim hive-site.xml 2.2 根据官方文档配置参数,拷贝数据到hive-site.xml文件中 https://cwiki.apache.org/confluence/display/Hive/AdminManual+MetastoreAdmin 配置完毕后,如果启动hive异常,可以重新启动虚拟机。(重启后,别忘了启动hadoop集群) 2.3 测试启动 [bigdata@hadoop001 hive]$ bin/hive ? 三. [bigdata@hadoop001 hive]$ bin/hive 3.3 启动hive后,回到MySQL窗口查看数据库,显示增加了metastore数据库 mysql> show databases