Hive的用法
1、Hive是Hadoop的一个子项目
利用MapReduce编程技术,实现了部分SQL语句。而且还提供SQL的编程接口。Hive推进Hadoop在数据仓库方面的发展。
Hive是一个基于Hadoop文件系统上的数据仓库架构。
主要功能:数据的ETL(抽取,转换,加载)工具,数据存储管理,大型数据集的查询与分析能力。
Hive定义了类SQL的语言,Hive QL,它允许用户进行和SQL相似的操作。还允许使用功能mapper和reducer操作。
Hadoop是批量处理系统,任务是高延迟性的,所以在任务提交和处理过程肯定会消耗时间。即使Hive处理的数据集非常小,在执行时也会出现延迟的问题。
所以,Hive的性能就不可能很好的和传统的Oracle数据库进行比较了。Hive不提供数据排序和查询的cache功能,而且也不提供在线事务处理。
Hive的最大价值是可扩展性(基于Hadop平台,可以自动适应机器数目和数据量的动态变化),可延展性(结合MapReduce和用户定义的函数库)。
2、Hive数据存储的原理
存储是建立在Hadoop文件系统上的。Hive本身没有专门的数据存储格式,也无法为数据建立索引。因此用户可以非常自由的组织Hive中的表,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符就可以解析数据。
3、Hive的数据模型
表Table,外部表External Table,分区Partition,桶Bucket
1、表Table:Hive中的表和数据库中的表概念上是类似的,每个表在Hive中都有一个对应的存储目录。
比如说一个表table,在HDFS中的路径是/datawarehouse/table,其中/datawarehouse是hive-site.xml配置文件中由
${hive.metastore.warehouse.dir}指定的数据仓库的目录,所有的表数据除了外部表都保存在这个目录中。
2、分区Partition:Hive中每个分区Partition,都对应数据库中相应分区的一个索引,但是Hive的分区组织方式和传统关系型数据库不同。
Hive中表的一个分区对应表的下一个目录,所有分区的数据都存储在对应的目录中。
3、桶Bucket:指定列进行哈希Hash计算时,根据哈希value切分数据。每一个桶对应一个文件。比如将属性列user列分散到32个桶中,首先要对user列的值 进行Hash计算,对应哈希value的桶写进对应的HDFS的目录。
4、外部表:指向已经在HDFS中存在的数据。它和表在元数据的组织上是相同的。如果删除一个外部表只会删除元数据,而表中的数据不会被删除。
4、Hive的元数据
由于Hive的元数据可能要面临不断地更新,修改,读取,它肯定不适合用哪个Hadoop文件系统进行存储。Hive将元数据存储在RDBMS中,比如MySQL,Derby中。Hive有三种模式可以连接到Derby数据库:
1、Single User Mode:单用户模式,它连接到一个内存(In-Memory),一般用来单元测试。
2、Multi User Mode:多用户模式,通过网络连接到一个数据库中,最常用
3、Remote Server Mode:远程服务器模式,用于非java客户端访问元数据库,在服务器启动一个MetaStoreServer,客户端利用Thrift协议通过MetaStoreServer来访问元数据库。
Hive的用法的更多相关文章
- 第3节 hive高级用法:16、17、18
第3节 hive高级用法:16.hive当中常用的几种数据存储格式对比:17.存储方式与压缩格式相结合:18.总结 hive当中的数据存储格式: 行式存储:textFile sequenceFile ...
- 第3节 hive高级用法:13、hive的函数
4.2.Hive参数配置方式 Hive参数大全: https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties 开 ...
- 利用SparkSQL(java版)将离线数据或实时流数据写入hive的用法及坑点
1. 通常利用SparkSQL将离线或实时流数据的SparkRDD数据写入Hive,一般有两种方法.第一种是利用org.apache.spark.sql.types.StructType和org.ap ...
- Hive Joins 用法与操作
Hive表连接的语法支持如下: join_table: table_reference JOIN table_factor [join_condition] | table_reference {LE ...
- 第3节 hive高级用法:15、hive的数据存储格式介绍
hive当中的数据存储格式: 行式存储:textFile sequenceFile 都是行式存储 列式存储:orc parquet 可以使我们的数据压缩的更小,压缩的更快 数据查询的时候尽量不要用se ...
- 第3节 hive高级用法:14、hive的数据压缩
六.hive的数据压缩 在实际工作当中,hive当中处理的数据,一般都需要经过压缩,前期我们在学习hadoop的时候,已经配置过hadoop的压缩,我们这里的hive也是一样的可以使用压缩来节省我们的 ...
- Impala 加载Hive的UDF
Impala的UDF有两种: Native Imapal UDF:使用C++开发的,性能极高,官方性能测试比第二种高出将近10倍 Hive的UDF:是Hive中的UDF,直接加载到Impala中,优点 ...
- hiveservice简介
由于实验的须要,这两天就搭了个Hive,简单记录一下: 平台:OS:Ubuntu Kylin 14.04 JAVA:Java 1.8.0_25 HADOOP:Hadoop 2.4.0 HIVE:Hiv ...
- hive支持in用法是从0.3.2版本后
写hive 用in 如分时段,分类型,分平台统计点击量 select substr(createtime,12,2) hour,logtype,os_id,count(*) from wizad_ ...
随机推荐
- JavaScript——执行环境、变量对象、作用域链
前言 这几天在看<javascript高级程序设计>,看到执行环境和作用域链的时候,就有些模糊了.书中还是讲的不够具体.通过上网查资料,特来总结,以备回顾和修正. 目录: EC(执行环境或 ...
- python Exception中的raise、assert
使用raise抛出异常 当程序出现错误,python会自动引发异常,也可以通过raise显式地引发异常.一旦执行了raise语句,raise后面的语句将不能执行. 演示raise用法. try: s ...
- Mysql 函数使用记录(一)——DATEDIFF、CONCAT
当目前为止呢,个人对Mysql的函数没有进行过统一的学习使用,都是用到了再去学习.而近日开始学习Linux了,所以为了防止这段时期结束后,将此阶段期间遇到的Mysql函数遗忘,开始在此对其做一个简单的 ...
- 添加删除tag
为某个分支打tag git tag -a v1. 9fceb02 删除tag git tag -d test_tag git push origin --delete tag test_tag 推送: ...
- WebAPI使用Token进行验证
1.需要用到的包 可以先敲代码 发现没有包在添加 2.在项目根目录下Web层添加“Startup”类 这个是Token的配置 3.在WebAPI层添加WebApiConfig类 也是Tok ...
- leecode第四十六题(全排列)
class Solution { public: vector<vector<int>> permute(vector<int>& nums) { int ...
- 《剑指offer》第四十一题(数据流中的中位数)
// 面试题41:数据流中的中位数 // 题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么 // 中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值, // ...
- Qt5模型/视图结构-视图(View)
实现自定义的View,可继承自QAbstractItemView类,对所需的纯虚函数进行重定义与实现,对于QAbstractItemView类中的纯虚函数,在子类中必须进行重定义,但不一定要实现,可根 ...
- js正则表达式的积累
验证数字:^[0-9]*$ 验证n位的数字:^\d{n}$ 验证至少n位数字:^\d{n,}$ 验证m-n位的数字:^\d{m,n}$ 验证零和非零开头的数字:^(0|[1-9][0-9]*)$ 验证 ...
- Java 多线程 fork-join
fork-join我们可以理解为分而治之,就是说当一个任务非常大的时候,我们可以按照一定的业务需求拆分为若干个小的任务,最后把这些小的任务再聚合起来. 下面就通过fork-join实现一个从1加到10 ...