2019-08-19 大数据分析利器HIVE

1.概念:Hive由Facebook开源,用于解决海量结构化日志的数据统计。

Hive是基于Hadoop的一个==数据仓库工具==,可以将==结构化的数据文件映射为一张表==,并提供类SQL查询功能。

本质是:==将Hive SQL转化成MapReduce程序==

学好HIVE可以做数据仓库开发

2.HIVE架构

1、用户接口:ClientCLI(hive shell)、JDBC/ODBC(java访问hive)、WEBUI(浏览器访问hive)2、元数据(hive中有哪些表,表里有哪些字段,字段类型,表的数据保存在哪里):Metastore元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;默认存储在自带的derby数据库中,==推荐使用MySQL存储Metastore==3、Hadoop集群使用HDFS进行存储,使用MapReduce进行计算。4、Driver:驱动器解析器(SQL Parser)将SQL字符串转换成抽象语法树AST对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。编译器(Physical Plan):将AST编译生成逻辑执行计划。优化器(Query Optimizer):对逻辑执行计划进行优化。执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于Hive来说默认就是mapreduce任务

hive没有队列的概念,只是把我们的程序写好后就提交。 YARN有队列的概念(谁先提交就运行谁的任务)

hive工作流程

HIVE实操

3.1 Hive JDBC服务

netstat -nlp命令查看运行了哪些服务和端口

通过beeline命令进入客户端



4、Hive的DDL操作(20分钟)

4.1 hive的数据库DDL操作

4.1.1、创建数据库

hive >createdatabase db_hive;

或者

hive >createdatabase ifnotexists db_hive;

数据库在HDFS上的默认存储路径是==/user/hive/warehouse/*.db==

4.1.2、显示数据库

  hive> show databases;

4.1.3、查询数据库

hive> show databaseslike'db_hive*';

4.1.4、查看数据库详情

hive>descdatabase db_hive;

4.1.5、显示数据库详细信息

hive>descdatabase extended db_hive;

4.1.6、切换当前数据库

hive > use db_hive;

4.1.7、删除数据库

#删除为空的数据库

hive>dropdatabase db_hive;


#如果删除的数据库不存在,最好采用if exists 判断数据库是否存在

hive>dropdatabase if exists db_hive;


#如果数据库中有表存在,这里需要使用cascade强制删除数据库

hive>dropdatabase if exists db_hive cascade;

4.2 hive的表DDL操作

4.2.1 、建表语法介绍

CREATE[EXTERNAL]TABLE[IFNOTEXISTS] table_name

[(col_name data_type [COMMENT col_comment], ...)]

[COMMENT table_comment]

[PARTITIONEDBY(col_name data_type [COMMENT col_comment], ...)] 分区

[CLUSTEREDBY(col_name, col_name, ...) 分桶

[SORTEDBY(col_name [ASC|DESC], ...)]INTOnum_buckets BUCKETS]

[ROW FORMAT row_format]   row format delimited fields terminatedby“分隔符”

[STOREDASfile_format]

[LOCATION hdfs_path]

4.2.1.1、Hive是一种建立在Hadoop文件系统上的数据仓库架构,并对存储在HDFS中的数据进行分析和管理;

(也就是说对存储在HDFS中的数据进行分析和管理,我们不想使用手工,我们建立一个工具把,那么这个工具就可以是hive)

4.2.1.2、 hive建表语法中的分隔符设定

ROW FORMAT DELIMITED 分隔符设置开始语句

FIELDS TERMINATED BY:设置字段与字段之间的分隔符

COLLECTION ITEMS TERMINATED BY:设置一个复杂类型(array,struct)字段的各个item之间的分隔符

MAP KEYS TERMINATED BY:设置一个复杂类型(Map)字段的key value之间的分隔符

LINES TERMINATED BY:设置行与行之间的分隔符

例:有以下格式的数据创建出合适的表结构,并将数据导入表中

战狼2,吴京:吴刚:卢婧姗,2017-08-16

大话西游,周星驰:吴孟达,1995-09-01


create table t_movie(movie_name string,actors array<string>,first_date date)

row format delimited

fields terminated by ','

collection items terminated by ':'

;



4.2.1.3、load 语法

按照建表要求,新建一个movie.txt文件


load语句:load data local inpath '/home/hadoop/data/movie.txt' into table t_movie;将/home/hadoop/data/movie.txt下的所有数据文件导入t_movie表中

(终端输入pwd查看文件路径,overwrite是覆盖表中原内容)

LOAD语句:load data [local] inpath 'filepath' [overwrite]

into table tablename [partition (partcol1=val1,partcol2=val2...)]

--将/root/data下的所有数据文件导入t3表中,并且覆盖原来的数据

load data local inpath '/root/data/' overwrite into table t3;

--将HDFS中 /input/student01.txt 导入到t3

load data inpath '/input/student01.txt' overwrite into table t3;

--将数据导入分区表

load data local inpath '/root/data/data1.txt' into table partition_table partition(gender='M');

4、hive 语句区分大小写

4.2.1.4 查询出每个电影的第二个主演

select movie_name,actors[1],first_datefromt_movie;

6.2.2 、字段解释说明

create table:创建一个指定名字的表

EXTERNAL :创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION),指定表的数据保存在哪里

COMMENT: 为表和列添加注释

PARTITIONED BY: 创建分区表

CLUSTERED BY: 创建分桶表

SORTED BY: 按照字段排序(一般不常用)

ROW FORMAT: 指定每一行中字段的分隔符row format delimited fields terminated by ‘\t’

STORED AS:指定存储文件类型: 

常用的存储文件类型:SEQUENCEFILE(二进制序列文件)、TEXTFILE(文本)、RCFILE(列式存储格式文件)

如果文件数据是纯文本,可以使用STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCEFILE。

LOCATION: 指定表在HDFS上的存储位置。

4.2.3、 创建内部表

1、直接建表

使用标准的建表语句

create table if not exists student(

id int,

name string

)

row format delimited fields terminated by'\t'

stored as textfile;

2、查询建表法

通过AS 查询语句完成建表:将子查询的结果存在新表里,有数据

create table if not exists student1 as select id, name from student;

3、like建表法

根据已经存在的表结构创建表

create table if not exists student2 like student;

4、查询表的类型

hive >desc formatted student;

6.2.4、 创建外部表

create external table if not exists default.emp(

id int,

name string,

age int

)

row format delimited fields terminated by '\t'

location '/hive/bigdata';

创建外部表的时候需要加上==external== 关键字

location字段可以指定,也可以不指定

指定就是数据存放的具体目录

不指定就是使用默认目录 ==/user/hive/warehouse==

6.2.5、 内部表与外部表的互相转换

1、内部表转换为外部表

#把student内部表改为外部表

alter table student set tblproperties('EXTERNAL'='TRUE');

2、外部表转换为内部表

#把student管理表改为外部表

alter table student set tblproperties('EXTERNAL'='FALSE');

6.2.6、 内部表与外部表的区别

1、建表语法的区别

外部表在创建的时候需要加上==external==关键字

2、删除表之后的区别

内部表删除后,表的元数据和真实数据都被删除了

外部表删除后,仅仅只是把该表的元数据删除了,真实数据还在,后期还是可以恢复出来



hive cli命令窗口查看本地文件系统

与操作本地文件系统类似,这里需要使用 ! (感叹号),并且最后需要加上 ;(分号)

例如

!ls /;

hive cli命令窗口查看HDFS文件系统

与查看HDFS文件系统类似

dfs -ls / ;

hive的底层执行引擎有3种

mapreduce(默认)

tez(支持DAG作业的计算框架)

spark(基于内存的分布式计算框架)


HIVE架构
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,717评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,501评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,311评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,417评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,500评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,538评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,557评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,310评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,759评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,065评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,233评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,909评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,548评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,172评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,420评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,103评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,098评论 2 352

推荐阅读更多精彩内容