Hive架构图

Hive产生原因

1 关系型数据库以产生多年sql成熟

2 简化开发降低成本

3 java成员可编写udf函数

Hive是什么

Hive是基于hadoop的一个数据库工具,使用Hql作为接口,maprduce作为执行层

Hdfs作为储存层。设计的目的是让sql开发人员java技能较弱的人编写并查询海量数据

缺点执行效率低

Hive的访问

Hive ----odbc/jdbc----hiveserver2

Hive---hive

Compiler 编译器

Optimizer 优化器

Executor 执行调度

Mapreduce和tez的区别

Tez是Apache最新开源的支持DAG作业的计算框架,它直接源于MapReduce框架,核心思想是将Map和Reduce两个操作进一步拆分,即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等,这样,这些分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过一些控制程序组装后,可形成一个大的DAG作业。总结起来,Tez有以下特点:

(1)Apache二级开源项目(源代码今天发布的)

(2)运行在YARN之上

(3) 适用于DAG(有向图)应用(同Impala、Dremel和Drill一样,可用于替换Hive/Pig等)

Tez可以将多个有依赖的作业转换为一个作业(这样只需写一次HDFS,且中间节点较少),从而大大提升DAG作业的性能。Tez已被Hortonworks用于Hive引擎的优化,经测试,性能提升约100倍

Hive cli说明

命令

描述

Quit

Exit

退出交互式

Reset

重置配置为默认值

Set

修改特定变量的值

Set -v

输出所有hadoop和hive的配置变量

DDL

创建数据库

Hive>create database student;

判断数据库是否存在

Hive>create database if not EXISTS studnet;

显示现有数据库

Hive>show databases;

条件查询数据库

Hive>show databases like ‘h.*’

创建指定存放位置

Hive>create database student

Location ‘路径’;

创建数据库时添加注释信息

Hive>create database student

>comment ‘注释’;

使用数据库

Hive>use student;

删除数据库

Hive>dorp database if exists student;

当数据库存在表时,先删除表再删除数据库

Hive>drop database if exists student cassade;4

创建表

Hive>use databases;

>create table if not Exists student(

Name string  comment ‘姓名’,

Age  int comment ‘年龄’

)

Comment ‘创建学生表’

Tblproperties(‘creator’=’lhs’,‘created_at’=’data’)

Location ‘表文件地址’;

创建表,复制表结构

Create table if not exists student2

Like Student.student;

显示数据库中的表

Hive>use student;

Hive>show tables;

显示表扩展信息

Hive>describe extended Student.student;

指定显示某个字段信息

Hive>descrbe student.student.name;

外部表

删除表不删除数据

Hive>create external teble if not exists student(

Name string,

Age int

)

Row format delimited fields terminated by ‘,’//以什么规则拆分

Location ‘路径’;

修改表名

Alter table student rename to student1;

修改列

Alter table student change column name name1

String

Comment ‘将name修改为name1’

After severity;

增加列

ALTER TABLE log_messages ADD COLUMNS (

app_name   STRING COMMENT 'Application name',

session_id LONG   COMMENT 'The current session id');

删除替换列

ALTER TABLE log_messages REPLACE COLUMNS (

hours_mins_secs INT    COMMENT 'hour, minute, seconds from timestamp',

severity        STRING COMMENT 'The message severity'

message         STRING COMMENT 'The rest of the message');

DML

从本地文件加载到表

1 hive> LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE pokes;

OVERWRITE表示覆盖表中数据,如果没有使用OVERWRITE将把数据追加到表中原有数据后面

载入文件中的内容必须按照正确地分隔符分割列,load data并不会进行数据验证

1 hive> LOAD DATA LOCAL INPATH './examples/files/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');2 hive> LOAD DATA LOCAL INPATH './examples/files/kv3.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-08');

上面给两条语句将数据载入到不同的分区

1 hive> LOAD DATA INPATH '/user/myname/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');

上面的命令从HDFS中加载文件。从HDFS中加载文件将移动文件

SQL(结构化查询语言)用于查询数据

查询

1 hive> SELECT a.foo FROM invites a WHERE a.ds='2008-08-15';

从invites表的2008-08-15分区中查询出foo字段

1 hive> INSERT OVERWRITE DIRECTORY '/tmp/hdfs_out' SELECT a.* FROM invites a WHERE a.ds='2008-08-15';

查询invites表的2008-08-15分区的所有字段内容并将查询结果导入到hdfs的/tmp/hdfs_out文件中

1 hive> INSERT OVERWRITE LOCAL DIRECTORY '/tmp/local_out' SELECT a.* FROM pokes a;

将查询结果保存到本地文件

hive> INSERT OVERWRITE TABLE events SELECT a.* FROM profiles a;

hive> INSERT OVERWRITE TABLE events SELECT a.* FROM profiles a WHERE a.key < 100;

hive> INSERT OVERWRITE LOCAL DIRECTORY '/tmp/reg_3' SELECT a.* FROM events a;

hive> INSERT OVERWRITE DIRECTORY '/tmp/reg_4' select a.invites, a.pokes FROM profiles a;   hive> INSERT OVERWRITE DIRECTORY '/tmp/reg_5' SELECT COUNT(*) FROM invites a WHERE a.ds='2008-08-15';

hive> INSERT OVERWRITE DIRECTORY '/tmp/reg_5' SELECT a.foo, a.bar FROM invites a;

hive> INSERT OVERWRITE LOCAL DIRECTORY '/tmp/sum' SELECT SUM(a.pc) FROM pc1 a;

一些查询示例

GROUP BY使用

1 hive> FROM invites a INSERT OVERWRITE TABLE events SELECT a.bar, count(*) WHERE a.foo > 0 GROUP BY a.bar;2 hive> INSERT OVERWRITE TABLE events SELECT a.bar, count(*) FROM invites a WHERE a.foo > 0 GROUP BY a.bar;

(上面的两条语句是等价的)

JOIN

1 hive> FROM pokes t1 JOIN invites t2 ON (t1.bar = t2.bar) INSERT OVERWRITE TABLE events SELECT t1.bar, t1.foo, t2.foo;

join使用时要注意方式的选择({LEFT|RIGHT|FULL} [OUTER] JOIN)及优化,下面是一些参考

http://yugouai.iteye.com/blog/1849395

http://www.open-open.com/lib/view/open1341214750402.html

多表插入(MULTITABLE INSERT)

1   FROM src2

INSERT OVERWRITE TABLE dest1 SELECT src.* WHERE src.key < 100

INSERT OVERWRITE TABLE dest2 SELECT src.key, src.value WHERE src.key >= 100 and src.key < 200

INSERT OVERWRITE TABLE dest3 PARTITION(ds='2008-04-08', hr='12') SELECT src.key WHERE src.key >= 200 and src.key < 300

INSERT OVERWRITE LOCAL DIRECTORY '/tmp/dest4.out' SELECT src.value WHERE src.key >= 300;

上面的语句含义是从src表中查询出各表需要的数据插入到不同的表中

hadoop hive组件介绍及常用cli命令的更多相关文章

  1. Hadoop以及组件介绍

    一.背景介绍 在接触过大数据相关项目的时候常常都会听到Hadoop这个东西,简单来说,他是一个用分布式计算来处理大数据的开源软件,下面包含了许多的组件和子项目,这篇文章将会介绍Hadoop的原理以及一 ...

  2. HIve常用CLI命令

    1. 清楚屏幕:Ctrl+L 或者!Clear 最后加上分号 2. 查看数据仓库中的表:show tables; 3. 查看数据仓库中内置函数:show functions: 4. 查看表结构 :de ...

  3. hadoop yarn组件介绍

    Yarn的产生 mapReduc1.0 1单点故障 2扩展效率低 3资源利用率高 降低运维成本 方便数据共享 多计算框架支持 MapReduce Spark Storm Yarn的架构图 Yarn模块 ...

  4. HBase介绍(4)---常用shell命令

    进入hbase shell console$HBASE_HOME/bin/hbase shell如果有kerberos认证,需要事先使用相应的keytab进行一下认证(使用kinit命令),认证成功之 ...

  5. zookeeper 常用cLi命令

    官网:https://zookeeper.apache.org/doc/r3.4.8/zookeeperAdmin.html#sc_zkCommands stat path [watch] set p ...

  6. hadoop Mapreduce组件介绍

    MapReduce原理 MapRedcue采用‘分而治之’的思想,对大规模数据集的操作,分发给一个主节点下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果.Mapreduce就是任务 ...

  7. redis学习(二) redis数据结构介绍以及常用命令

    redis数据结构介绍 我们已经知道redis是一个基于key-value数据存储的数据结构数据库,这里的key指的是string类型,而对应的value则可以是多样的数据结构.其中包括下面五种类型: ...

  8. 为你的AliOS Things应用增加自定义cli命令

    摘要: 怎么才能在RTOS系统中,通过 串口shell控制LED的开关. 在日常嵌入式开发中,我们经常会用串口命令来使设备进入某种特定的状态,或执行某个特定的操作.如系统自检,模拟运行,或者进入手动模 ...

  9. Hadoop大数据生态系统及常用组件(山东数漫江湖)

    经过多年信息化建设,我们已经进入一个神奇的“大数据”时代,无论是在通讯社交过程中使用的微信.QQ.电话.短信,还是吃喝玩乐时的用到的团购.电商.移动支付,都不断产生海量信息数据,数据和我们的工作生活密 ...

随机推荐

  1. Union and Intersection of two sorted lists 并集和交集

    跟面试官确认是arrayList还是singly-linked list /*  Union 并集:两个升序的list a, b, 返回其并集(升序排序)*/ public class UnionTw ...

  2. Android 中 IntentService 的优点

     简而言之:可以处理异步请求,任务完成会自动停止自己. IntentService是一个通过Context.startService(Intent)启动可以处理异步请求的Service,使用时你只需要 ...

  3. php RSA加密传输代码示例(轉)

    原文地址:http://www.cnblogs.com/firstForEver/p/5803940.html 涉及敏感数据的传输,双方最好约定使用加密解密.那RSA非对称加密就大有作为了. 服务端可 ...

  4. WebApi中Swagger的使用(超级简单)

    Swagger解释 Swagger是一种Rest API的简单但强大的表示方式,她是标准的与语言无关,这种表示方式不但人可读,而且机器可读. 可以作为Rest API的交互式文档,也可以作为Rest ...

  5. 使用JFinal实现使用MVC获取表单中的数据并将提示信息返回给另一jsp页面。

    1.包结构 2.我们需要对web.xml进行配置: <?xml version="1.0" encoding="UTF-8"?> <web-a ...

  6. spingmvc项目根路径访问不到

    问题: 如何改mvc中项目的欢迎页,或者叫做根路径 一个东西快弄完了,就剩下一个问题,应该是个小问题.就是mvc项目的欢迎页,怎么给改下呢 访问根路径http://localhost/demo 怎么都 ...

  7. (转)HTTP 错误 404.2 - Not Found 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面

    详细错误:HTTP 错误 404.2 - Not Found. 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面. 出现环境:win7 + IIS7.0 解决办法 ...

  8. PAT 1081 检查密码(15) (代码+思路)

    1081 检查密码(15 分) 本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能.该网站要求用户设置的密码必须由不少于6个字符组成,并且只能有英文字母.数字和小数点 .,还必须既有字母也 ...

  9. Codeforces 545E. Paths and Trees 最短路

    E. Paths and Trees time limit per test: 3 seconds memory limit per test: 256 megabytes input: standa ...

  10. 性能监控工具——Cacti安装文档

    一.Cacti安装说明 1.安装说明 一般性的安装说明,详细的操作系统具体的安装说明可用于Linux. 2.服务器安装要求 RRDTool 1.2.x或更高版本 MySQL 4.1.x或5.x更高版本 ...