Hive HQL学习

HQL学习

1.hive的数据类型

2.hive_DDL

2.1创建、删除、修改、使用数据库

Default数据库,默认的,优先级相对于其他数据库是最高的

 

2.2重点:创建表_内部表_外部表

hive通过sql来分析hdfs上结构化的数据,将数据文件映射为表的结构

  1. – create table person(
  2. – id int,
  3. – name string,
  4. – age int,
  5. – likes array<string>,
  6. – address map<string,string>
  7. –)
  8. – row format delimited
  9. – FIELDS TERMINATED BY ‘,‘
  10. – COLLECTION ITEMS TERMINATED BY ‘-‘
  11. – MAP KEYS TERMINATED BY ‘:‘
  12. – lines terminated by ‘\n‘;
  13. –Select address[‘city’] from person where name=‘zs’

第一点注意:ROW FORMAT row_format

序列化和反序列化要对数据文件进行拆分映射到表里面,那么ROW FORMAT 加上 DELIMITED 就是指定序列化和反序列化的规则,通俗讲就是如何进行数据的拆分,重写的规则就是ROW FORMAT 加上 SERDE

 

比如:

FIELDS TERMINATED BY ‘,‘        指定一行数据的字段按照,分割

COLLECTION ITEMS TERMINATED BY ‘-‘   如果是集合,按照-分割集合中的每个元素

MAP KEYS TERMINATED BY ‘:‘  map类型的按照:分割

LINES TERMINATED BY ‘\N‘   行之间按照换行符分割,这也是默认的

第二点注意:STORED AS file_format

它指定文件在hdfs上以什么格式进行存储,默认是TEXTFILE

其他几种方式在存储时可以指定压缩,使用压缩(好处:减少磁盘占用空间,坏处:写的时候进行压缩,读的时候进行解压缩,都需要占用cpu资源,效率会打折扣)

第三点注意:定义字段时的特殊类型(array,map,struct)

第四点注意:想想插入测试数据(上面的那三条)会用insert语句么?

也可以,但是不会那样做,因为insert底层转化为MR

所以这里采用另一种方式:

LOCAL如果数据存在本地需要加LOCAL;如果存在hdfs上就不用了

如果是本地,那麽这种方式先上传到hdfs中一个临时文件,再将临时文件移动到hive中对应的数据存放目录下

如果是将hdfs中的数据加载进表,那么这种方式实际是讲hdfs中的数据文件移动到了hive的dir下(/user/hive/warehouse)

第五点注意:外部表

创建外部表时,需要指定数据存放的位置

创建外部表,会在hdfs中LOCATION指定的路径下创建和表名对应的目录

(而创建内部表,会在hive-site.xml中配置的dir下创建对应的目录)

 删除内部表和外部表的区别?

1.删除内部表,会元数据信息联同数据一块进行删除(内部表数据的维护交由hive本身进行管理

2.删除外部表,只会删除元数据信息,但是在hdfs上存储的数据还在(外部表则不是

truncate table 表名

第六点注意:将子查询的结果存储到新表中

第一步:创建了表;第二部:将查出的结果插入到表中(注意这种方式在创建表时不能指定列,否则就会报错)

6.1这种方式什么时候会用?

创建中间表的时候,如果需要一些数据可以通过这种方式来做。

6.2这种方式和  create table psn4 like psn3 的区别?

3.hive_分区

1.分区表什么时候会用?

举例一:比如有一张人员表,分析一些日志数据,可以按照天进行分区,那么每一天的数据会存放在对应的分区中(会存储在每一天的目录下面)

举例二:有一个很大的表,里面存放了很多的日志,这时候可以采用分区,进行标识,分块管理

注意:分区的字段一定不能在表的列名里面

2.分区表的创建,添加数据,查看对应分区下的数据,修改分区、删除分区

创建带有分区的表psn5

 

创建了分区,进行插入数据,就需要指定分区字段,否则就会报错

查看表,发现有两个分区(boy, girl)

在hdfs中查看,发现目录下有两个目录对应两个分区

查看指定分区下的数据

select * from psn5 where sex = ‘boy‘

添加分区

ALTER TABLE psn5 ADD PARTITION (sex = ‘weizhi‘)              //在一个表中添加一个分区

ALTER TABLE psn5 DROP PARTITION (sex = ‘weizhi‘)            //同时删除对应分区中的数据

  1. ---分区_指定两个分区字段
  2. create table psn5(
  3. id int,
  4. name string,
  5. likes ARRAY <string>,
  6. address MAP <string, string>
  7. )
  8. PARTITIONED BY(sex string,age int)
  9. ROW FORMAT DELIMITED
  10. FIELDS TERMINATED BY ‘,‘
  11. COLLECTION ITEMS TERMINATED BY ‘-‘
  12. MAP KEYS TERMINATED BY ‘:‘;
  13. ---创建分区后,再进行插入数据,就需要指定分区字段
  14. load data local inpath ‘/root/data‘ into table psn5 partition (sex=‘boy‘,age=1);

删除分区的时候,一定要注意(分区下可能还有分区)

4.hive_DML

重点掌握1:load data方式,2:from insert ...插入数据

1.创建psn7,将数据从psn1中查出来,插入到psn7中

  1. create table psn7 like psn1;
  2. from psn1
  3. insert into table psn7 select id, name, likes, address

思考一:hive其实就是写sql来分析hdfs上的数据,那么问题来了,以上这种方式做什么用?

比如我们要分析一个WordCount,那么结果只是显示在控制台么,显然不是,我们要将hive sql运行的结果存储到另一张表中

为什么要将from放在上面呢?

我们将对同一张表分析的多个指标写到结果表中,就不用写多个sql了,要不还需要join

时间: 2024-10-12 20:20:46

Hive HQL学习的相关文章

hive的学习入门(飞进数据仓库的小蜜蜂)

前言 hive是构建在Hadoop上的数据仓库平台,其设计目标是:使Hadoop上的数据操作与传统的SQL结合,让熟悉sql的开发人员能够轻松的像Hadoop平台迁移. Hive是Facebook的信息平台的重要组成部分,Facebook在2008年将其共献给Apache,现在Hive是Hadoop家族中一款数据仓库产品. Hive最大的特点是:提供了类SQL的语法,封装了底层的MapReduce过程,让有SQL基础的业务人员,也可以也利用Hadoop进行大数据的操作.就是这一个点,解 决了原数

hive入门学习线路指导

转自:http://www.aboutyun.com/thread-7598-1-1.html hive被大多数企业使用,学习它,利于自己掌握企业所使用的技术,这里从安装使用到概念.原理及如何使用遇到的问题,来讲解hive,希望对大家有所帮助.此篇内容较多:看完之后需要达到的目标1.hive是什么2.明白hive的原理3.会使用hive4.会使用hive编程 1.hive首先我们需要hive是什么?让你真正明白什么是hive上面讲的很明白1.hive是一个数据仓库2.hive基于hadoop.总

Hive基础学习

Hive 学习记录Hive介绍:Hive 是起源于Facebook,使得Hadoop进行SQL查询成为可能,进而使得非程序员也可以进进行对其使用:它是一种数据仓库工具,将结构化的数据文件 映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务运行.其优点是学习成本低,可以通过类SQL语句快速实 现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析 Hive 学习知识点: HIVE 的优势: 1). 帮助无开发经验的

60分钟内从零起步驾驭Hive实战学习笔记

本博文的主要内容是: 1. Hive本质解析 2. Hive安装实战 3. 使用Hive操作搜索引擎数据实战 SparkSQL前身是Shark,Shark强烈依赖于Hive.Spark原来没有做SQL多维度数据查询工具,后来开发了Shark,Shark依赖于Hive的解释引擎,部分在Spark中运行,还有一部分在Hadoop中运行.所以讲SparkSQL必须讲Hive. 1. Hive本质解析 1. Hive是分布式数据仓库,同时又是查询引擎,所以SparkSQL取代的只是Hive的查询引擎,在

Hive基础学习文档和入门教程

问题导读 1.hive除了包含用户接口.元数据,还包含哪些内容? 2.hive包含哪些操作? 3.hive数据能否被修改? 4.hive优化有哪些常用方法? 摘要: Hive 是建立在 Hadoop 上的数据仓库基础构架.它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储.查询和分析存储在 Hadoop 中的大规模数据的机制.Hive 定义了简单的类 SQL 查询语言,称为 QL,它允许熟悉 SQL 的用户查询数据.同时,这个语言也允许熟悉 MapReduce 开发者

Hive入门学习--Hadoop简介

现在想要应聘大数据分析或者数据挖掘岗位,很多都需要会使用Hive,Mapreduce,Hadoop等这些大数据分析技术.为了充实自己就先从简单的Hive开始吧.接下来的几篇文章是记录我如何入门学习Hive的. 一.Hive简介 Hive是一个数据仓库基础工具,架构在Hadoop之上,能够处理Hadoop中的结构化数据.简言之,Hive和SQL是一个数据分析和处理工具,它提供了SQL查询功能,可以将SQL语句转换为Mapreduce任务运行. 既然Hive是架构在Hadoop之上的,我们就有必要简

Hive的学习之路(理论篇)

一.Hive介绍 Apache官网给出的logo,一半是Hadoop大象的头,一半是蜜蜂的身体,也是寓意着它是基于Hadoop,哈哈,纯属个人理解,进入正题. Hive是基于Hadoop的一个数据仓库工具,可以将sql语句转换成MapReduce任务来运行.可以用来数据提取.转化.加载(ETL),这是一种可以存储.查询和分析存储在Hadoop中的大规模数据的机制. Hive定义了简单的类sql查询语言,成为HiveQL,它允许熟悉SQL的用户查询数据. HiveSQL:Hive通过类sql的语法

Spark、Hadoop、Hive安装学习

1.Hive安装 http://blog.csdn.net/an342647823/article/details/46048403 2.Hadoop安装 http://www.itnose.net/detail/6182168.html 3.Spark安装 http://stark-summer.iteye.com/blog/2173219 http://ju.outofmemory.cn/entry/177769

hive 文件系统学习实例

Hive存储是基于hadoop hdfs文件系统的,通过默认内嵌的Derby 数据库或外部数据库系统(如mysql)组织元数据访问,下面就通过实际案例描述其存储过程. 1, 在hive 中创建表,然后把外部csv文件导入其中(外部文件为Batting.csv, 内部表为temp_batting): hive>create table temp_batting(col_value STRING); hive> show tables;OKtemp_batting... hive>LOAD