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.数据倾斜怎么办?

倾斜原因: map输出数据按Key Hash分配到reduce中,由于key分布不均匀、或者业务数据本身的特点。等原因造成的reduce上的数据量差异过大。key分布不均匀、业务数据本身的特性、SQL语句造成数据倾斜;
解决办法:①参数调节:
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.
bin  [bɪn]  详细X
基本翻译
n. 垃圾箱;箱子,容器;瓶酒搁架;统计堆栈;(非正式)精神病院
v. 把……扔进垃圾桶;把……放入容器中;拒绝;把(酒等)放进搁架;把(数据)归入统计堆
n. (Bin) (美、意)本(人名)

网络释义
Hyun Bin: 玄彬
Bin Packing: 装箱问题
garbage bin: 垃圾箱

Hive学习01-基础常见问题的更多相关文章

  1. shell-bash学习01基础、打印、环境变量

    基础 终端提示符: username@hostname$; $: 一般用户 #:root用户 运行脚本 Bash执行: * bash script.sh; 直接运行: 脚本开头添加shebang起始: ...

  2. hive学习01词频统计

    词频统计 #创建表,只有一列,列名line create table word_count ( line string) row format delimited fields terminated ...

  3. Swift 学习- 01 -- 基础部分

    print("世界,你好") var myVariable = 42 myVariable = 50 let myConstant = 42 let implicitinteger ...

  4. 01.基础架构:一条SQL查询语句是如何执行的?学习记录

    01.基础架构:一条SQL查询语句是如何执行的?学习记录http://naotu.baidu.com/file/1c8fb5a0f2497c3a2655fed89099cb96?token=ff25d ...

  5. hive学习笔记之六:HiveQL基础

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  6. hive学习笔记之九:基础UDF

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. 学习webpack基础笔记01

    学习webpack基础笔记 1.webpack搭建环境最重要的就是如何使用loader和plugins,使用yarn/npm安装插件.预处理器,正确的配置好去使用 2.从0配置webpack - 1. ...

  8. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  9. hive学习

    大数据的仓库Hive学习  10期-崔晓光 2016-06-20  大数据   hadoop   10原文链接 我们接着之前学习的大数据来学习.之前说到了NoSql的HBase数据库以及Hadoop中 ...

随机推荐

  1. Java--- Ambiguous mapping. Cannot map "***Controller" been method解决办法

    打开网页报错: Ambiguous mapping. Cannot map 'handController' method  public com.smallchill.core.toolbox.aj ...

  2. 【bzoj 3173】[Tjoi2013]最长上升子序列

    Description 给定一个序列,初始为空.现在我们将1到N的数字插入到序列中,每次将一个数字插入到一个特定的位置.每插入一个数字,我们都想知道此时最长上升子序列长度是多少? Input 第一行一 ...

  3. oracle 导入execl

    如果没有配置好的,就需要添加一个 如果找不到相应的驱动就安装AccessDatabaseEngine.exe

  4. Docker 添加环境系统文件配置

    在 docker 启动文件添加默认环境系统配置 " /etc/default/docker ": 添加  Environment File 配置: # vi /usr/lib/sy ...

  5. Kali Linux之常见后门工具介绍

    1.Meterpreter 它是Metasploit框架中功能强大的后渗透模块.可以通过Meterpreter的客户端执行攻击脚本,远程调用目标主机上运行的Meterpreter服务端. 命令 作用 ...

  6. 第21月第6天 zhihu如何用3个月零基础入门机器学习

    1. 我们应该记住,既成的事实一定有它的道理,如果我们不能理解它,恐怕得从自身找原因.如果你交易股票,请记住,如果预测和市场不一致,错的是预测,而不是市场 https://www.cnblogs.co ...

  7. centos7 五大查找常用命令

    1.find find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件. find的使用格式如下: $ find <指定目录> <指定条件> <指定动作> ...

  8. java基础(持续整理)

    文本会梳理java这门语言的所有基础知识,所谓“掌握”这门语言. 1.底层容器 2.并发包 1.locks部分:包含在java.util.concurrent.locks包中,提供显式锁(互斥锁和速写 ...

  9. DEX、ODEX、OAT文件&Dalvik和ART虚拟机

    https://www.jianshu.com/p/389911e2cdfb https://www.jianshu.com/p/a468e714aca7 ODEX是安卓上的应用程序apk中提取出来的 ...

  10. java实现在线浏览PDF文档功能

    实现在线浏览pdf文档功能(本代码适用于项目服务中固定的并且少量的pdf浏览,比如注册时的注册条款在线浏览等): //设置响应内容类型为PDF类型 response.setContentType(&q ...