Hive学习01-基础常见问题
cloudera公司发行的CDH中
hive的有三种角色:gateway、hiveserver2、hive metastore三种角色
其中hive metastore主要用于客户端连接 默认端口
hive server2 主要用于jdbc连接(很多bi产品都靠jdbc连接,比如hue,帆软等软件)
gateway 是client的一个代理,主要用于更新hive的客户端配置 apache社区的hive中也分为客户端,hiveserver2和hive metastore
启动 metastore : hive --service metastore 启动hive :hive --service hiveserver2
理论:
什么是hive:
1. Hive旨在实现轻松的数据汇总,即时查询和分析大量数据。
2. 它提供了SQL,使用户可以轻松地进行临时查询,汇总和数据分析。
3. Hive可以使用用户定义函数(UDF)。
4. 使用率:实际开发中,80%操作使用Hive完成,20%使用MapReduce。
5. 与MapReduce相比,Hive特点:稳定、代码精简、易于维护。
6. HiveQL:未严格实现SQL-92标准。
7. 本质:将HiveQL转化为一个或多个MapReduce作业并在集群上运行,但并不是所有HiveQL都会转为MapReduce作业。
常见问题:
1、hive 内部表:加载数据到 hive 所在的 hdfs 目录,删除时,元数据和数据文件都删除
hive外部表:不加载数据到 hive 所在的 hdfs 目录,删除时,只删除表结构
2、分区作用:防止数据倾斜
3、sort by和order by之间的区别?distribute by?cluster by? group by?
sort by 是单个reduce内部的排序; order by 是全局排序,只触发一个reduce distribute by :按照指定的字段对数据进行划分输出到不同的reduce中,通常与sort by 连用 cluster by :除了具有distribute by 的功能外还兼具sort by 的功能 group by 通常用于做聚合函数操作 count(*) sum(xx)
4.Hive中追加导入数据的4种方式是什么
#hdfs
load data inpath 'hdfs://xxx/xxx' into (overwrite) table a
#本地
load data local inpath '/xxx/xx' into (overwrite) table a
#查询导入
create table student as select * from student1;
#查询结果导入
insert (overwrite) into table student select user_id,user_name from student2;
5.hive导出数据
#导出到hdfs 会递归创建文件夹 (注意文件夹如果存在,数据会被清空)高危操作
insert overwrite directory '/liuzhimin/test2/a' row format delimited fields terminated by '\t' select * from u_data_new;
#导出到本地(高危操作)
insert overwrite local directory '/home/dip/a' row format delimited fields terminated by '\t' select * from u_data_new;
#bash
hive -e "use cslc; select * from u_data_new ;"> a.txt
6.数据倾斜怎么办?
解决办法:①参数调节:
set hive.map.aggr=true
set hive.groupby.skewindata=true
有数据倾斜的时候进行负载均衡,当选项设定为true,生成的查询计划会有两个MR Job。第一个MR Job中,Map的输出结果集合会随机分布到Reduce中,每个Reduce做部分聚合操作,
并输出结果,这样处理的结果是相同Group By Key有可能被分发到不同的Reduce中,从而达到负载均衡的目的;
第二个MR Job在根据预处理的数据结果按照 Group By Key 分布到Reduce中(这个过程可以保证相同的 Group By Key 被分布到同一个Reduce中),最后完成最终的聚合操作。 ②SQL语句调节:
大小表join,小表进内存; 大表Join大表:把空值的Key变成一个字符串加上一个随机数,把倾斜的数据分到不同的reduce上,由于null值关联不上,处理后并不影响最终的结果 count distinct大量相同特殊值:count distinct时,将值为空的情况单独处理,如果是计算count distinct,可以不用处理,直接过滤,在做后结果中加1。
如果还有其他计算,需要进行group by,可以先将值为空的记录单独处理,再和其他计算结果进行union.
Hive学习01-基础常见问题的更多相关文章
- shell-bash学习01基础、打印、环境变量
基础 终端提示符: username@hostname$; $: 一般用户 #:root用户 运行脚本 Bash执行: * bash script.sh; 直接运行: 脚本开头添加shebang起始: ...
- hive学习01词频统计
词频统计 #创建表,只有一列,列名line create table word_count ( line string) row format delimited fields terminated ...
- Swift 学习- 01 -- 基础部分
print("世界,你好") var myVariable = 42 myVariable = 50 let myConstant = 42 let implicitinteger ...
- 01.基础架构:一条SQL查询语句是如何执行的?学习记录
01.基础架构:一条SQL查询语句是如何执行的?学习记录http://naotu.baidu.com/file/1c8fb5a0f2497c3a2655fed89099cb96?token=ff25d ...
- hive学习笔记之六:HiveQL基础
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- hive学习笔记之九:基础UDF
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 学习webpack基础笔记01
学习webpack基础笔记 1.webpack搭建环境最重要的就是如何使用loader和plugins,使用yarn/npm安装插件.预处理器,正确的配置好去使用 2.从0配置webpack - 1. ...
- Python学习--01入门
Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...
- hive学习
大数据的仓库Hive学习 10期-崔晓光 2016-06-20 大数据 hadoop 10原文链接 我们接着之前学习的大数据来学习.之前说到了NoSql的HBase数据库以及Hadoop中 ...
随机推荐
- 使用Verilog HDL语言注意事项
1.wire和reg区别,输入输出是wire型,表示硬件线的连接,要在always模块里被赋值需要中间reg型变量,两者通过: assign 输入/输出=reg型中间变量 2.case的default ...
- HTTP访问控制(CORS)
当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时,资源会发起一个跨域 HTTP 请求. 比如,站点 http://domain-a.com 的某 HTML 页面通过 <img ...
- luogu 4377 Talent show 01分数规划+背包dp
01分数规划+背包dp 将分式下面的部分向右边挪过去,通过二分答案验证, 注意二分答案中如果验证的mid是int那么l=mid+1,r=mid-1,double类型中r=mid,l=mid; 背包dp ...
- Linux之Ubuntu下DSL拨号上网
可视化桌面配置方法 1.编辑连接 2.选择 增加 3.选择 DSL 4.选择 新建连接[cmcc@gx属于移动校园用户的ISP指定后缀] 6.OK 当然,还有其他拨号上网的办法: [Linux/Ubu ...
- spring cloud(学习笔记)微服务启动错误(1)
今天下午在启动spring cloud微服务的时候,报了这个错误: Error starting ApplicationContext. To display the auto-configurati ...
- Http 持久连接与 HttpClient 连接池
一.背景 HTTP协议是无状态的协议,即每一次请求都是互相独立的.因此它的最初实现是,每一个http请求都会打开一个tcp socket连接,当交互完毕后会关闭这个连接. HTTP协议是全双工的协议, ...
- ionic3安装
1.安装 1)安装nodejs: 官网下载安装 2)可选安装 cnpm: //安装了cnpm后,以后用到npm安装的东西都可以把npm替换成cnpm npm install -g cnpm --re ...
- Maven多模块项目管理小结
原文地址:http://blog.csdn.net/whuslei/article/details/7989102 题记 最近刚完成一个用Maven构建的Web项目,看了一些Maven方面的书,比如& ...
- Struts2-052 漏洞复现
s2-052漏洞复现 参考链接: http://www.freebuf.com/vuls/147017.html http://www.freebuf.com/vuls/146718.html 漏洞描 ...
- Linux 系统管理