Hive学习笔记:一初识

Hive是什么?

Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop 
中的大规模数据的机制。Hive定义了简单的类SQL 
查询语言,称为HQL,它允许熟悉SQL 
的用户查询数据。同时,这个语言也允许熟悉MapReduce 开发者的开发自定义的mapper 和
reducer  来处理内建的mapper和reducer 无法完成的复杂的分析工作(UDF)。

Hive是SQL解析引擎,它将SQL语句转译成M/RJob然后在Hadoop执行。

Hive的表其实就是HDFS的目录,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在M/RJob里使用这些数据。

HIve的表----------HDFS的目录

HIve的数据--------HDFS的目录下面的(数据)文件

Hive中行列--------HDFS的目录下面的数据文件的行列

Hive相当于hadoop的客户端工具,部署时不一定放在集群管理节点中,可以放在某个节点上。

Hive强调的地方: 海量数据的存储、加载,海量数据查询,hive不支持事务。

Hive的数据存储

Hive的数据存储基于Hadoop HDFS

Hive没有专门的数据存储格式

存储结构主要包括:数据库、文件、表、视图、索引

Hive默认可以直接加载文本文件(TextFile),还支持SequenceFile、RCFile

创建表时,指定Hive数据的列分隔符与行分隔符,Hive即可解析数据

Hive的体系结构

用户接口主要有三个:CLI,JDBC/ODBC和 WebUI

CLI,即Shell命令行

JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似

WebGUI是通过浏览器访问 Hive

Hive 将元数据存储在数据库中(metastore),目前只支持 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等

解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划(plan)的生成。生成的查询计划存储在 HDFS 中,并在随后由 MapReduce 调用执行

Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from table 不会生成 MapRedcue 任务)

Hive的元数据

metastore是hive元数据的集中存放地。

metastore默认使用内嵌的derby数据库作为存储引擎

Derby引擎的缺点:一次只能打开一个会话

使用MySQL作为外置存储引擎,多用户同时访问

时间: 2024-10-26 21:26:34

Hive学习笔记:一初识的相关文章

hive 学习笔记精简

创建表: drop table t create table if not exists t (t string) partitioned by (log_date string) row format delimited fields terminated by '\t' lines terminated by '\n' create table t1 like t create table t2 as select * from t //如果加多余的字段或者加group by等关键字会报错

Java学习笔记心得——初识Java

初识Java 拿到这本厚厚的<Java学习笔记>,翻开目录:Java平台概论.从JDK到TDE.认识对象.封装.继承与多态...看着这些似懂非懂的术语名词,心里怀着些好奇与担忧,就这样我开始走进Java的世界.  Java产生的历史 Java来自于Sun公司的一个叫Green Project中撰写的程序语言,全球信息网(World Wide Web)兴起,Java Applet成为网页互动技术的代表,特别适合于Internet应用程序开发. Java语言的特点 1.面向对象 这是Java最重要

Hive学习笔记(一)

摘要: Hive 是建立在 Hadoop 上的数据仓库基础构架.它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储.查询和分析存储在 Hadoop 中的大规模数据的机制.Hive 定义了简单的类 SQL 查询语言,称为 QL,它允许熟悉 SQL 的用户查询数据.同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作.1. HIVE结构 Hive 是建

Hive学习笔记(三)

分区和桶: hive把表组织成分区,这是一种根据分区列的值进行粗略划分的机制.使用分区可以加快数据分片的查询速度. 表或分区可以进一步划分为桶,它会为数据提供额外的数据结构从而获得更高效的查询处理.比如:根据用户ID来划分桶,我们可以在所有用户集合的随机样本上快速计算基于用户的查询. 分区: 分区是在创建表时用PARTITIONED BY子句进行定义.该子句需要定义列的列表. create table logs(ts String,line String ) PARTITIONED BY(dt

Hive学习笔记(二)

类型转换 hive原子数据类型可以进行隐式数据类型转换,如果某个表达式使用INT,那么TINYINT会转化为INT,hive不会进行反向转换,除非使用cast才操作. 数据类型转化规则: 任何整数类型都会转换为范围更广的类型. 所有整数类型.FLOAT.STRING类型都能隐式转换为double类型. TINYINT.SMALLINY.INT都可以转换为FLOAT BLOOEAN 不能转换为任何其他数据类型 cast进行显式数据类型转换: eg:CAST('1',AS INT) 将字符串'1'转

Hive学习笔记——保存select结果,Join,多重插入

1. 保存select查询结果的几种方式: 1.将查询结果保存到一张新的hive表中 create table t_tmp as select * from t_p; 2.将查询结果保存到一张已经存在的hive表中(用load的时候,可以是into或者overwrite into,这里是into或者overwrite) insert into/overwrite table t_tmp select * from t_p; 3.将查询结果保存到指定的文件目录(可以是本地,也可以是hdfs) in

hive学习笔记-数据操作

hive数据操作 hive命令行操作 hive -d --define <key=value> 定义一个key-value可以在命令行中使用 hive -d database <databasename>    指定使用的数据库 hive -e "hql"    不需要进入cli执行hql语句,可以在脚本中使用 hive -f fileName 将hql放到一个file文件中执行,sql语句来自file文件 hive -h hostname 访问主机,通过主机的

NuGet学习笔记(1)——初识NuGet及快速安装使用

转自:http://kb.cnblogs.com/page/143190/ 关于NuGet园子里已经有不少介绍及使用经验,本文仅作为自己研究学习NuGet一个记录. 初次认识NuGet是在去年把项目升级为MVC3的时候,当时看到工具菜单多一项Library Package Manager,右键项目文件多了一项Manage Nuget Packages...,这是个神马玩意儿,当时是一头雾水,后台查了些资料才知到NuGet是 Visual Studio的一个扩展,引用dudu的话来说就是管理程序的

[转]NuGet学习笔记(1) 初识NuGet及快速安装使用

关于NuGet园子里已经有不少介绍及使用经验,本文仅作为自己研究学习NuGet一个记录. 初次认识NuGet是在去年把项目升级为MVC3的时候,当时看到工具菜单多一项Library Package Manager,右键项目文件多了一项Manage Nuget Packages...,这是个神马玩意儿,当时是一头雾水,后台查了些资料才知到NuGet是 Visual Studio的一个扩展,引用dudu的话来说就是管理程序的包包,可以参考msdn上这篇文章使用 NuGet 管理项目库以及咱们博客园站