zoukankan      html  css  js  c++  java
  • Hive简介

    首先,这里说的Hive指的是Hive on Mapreduce。(此外,还有Hive on Spark,区别只是后者把执行计划放到spark集群上运行。)

    Hive是一种数据仓库软件,能够协助读写、管理那些存储在分布式存储系统上的大数据集。

    Hive架构在Hadoop之上,底层存储在HDFS上,底层计算通过MapReduce。

    Hive定义了一种类似SQL的查询语言,被称为HQL。因此,Hive的出现可以让那些精通SQL技能,但是编程能力较弱,以及不擅长Java语言的用户能够在HDFS大规模数据集上很方便地利用类SQL语言查询、汇总、分析数据。

    由于Hadoop本身是一个批处理,高延迟的计算框架,Hive使用Hadoop作为执行引擎,自然也就有了批处理,高延迟的特点。此外,Hive对事物的支持不够好,原因是HDFS本身就设计为一次写入,多次读取的分布式存储系统,因此,不能使用Hive来完成诸如DELETE、UPDATE等在线事务处理的需求。因此,Hive适合处理离线的,非实时的大数据。

    Hive的一些重要概念:

    1,Database:数据库。概念等同于关系型数据库的Schema。在hdfs中表现为${hive.metastore.warehouse.dir}目录下的一个文件夹。

    2,Table:内部表。概念等同于关系型数据库的表。数据由hive管理,当使用drop删除表时,会把表的元数据和数据一起删除,数据无法恢复。在hdfs中表现所属db目录下一个文件夹。

    3,External Table:外部表。数据不由Hive管理,使用drop命令删除一个表时,只是把表的元数据给删除了,而表的数据不会删除。

    4,Partitions:分区。按表定义的分区字段,把具有相同字段值的数据存储到一个目录中。在hdfs中表现为table目录下的子目录。

    5,Buckets (or Clusters):分桶。同一个分区内的数据还可以细分,将相同的KEY再划分至一个桶中,有点类似于HASH分区。在hdfs中表现为同一个表目录下根据hash散列之后的多个文件。

  • 相关阅读:
    【英语】Bingo口语笔记(40)
    【英语】Bingo口语笔记(38)
    【Python系统学习】基础篇
    【英语】Bingo口语笔记(37)
    [转]linux下ulimit命令详解
    【转】linux read 用法
    【转】Linux下使用locale命令设置语言环境
    【转】基于linux下的变量声明declare的用法
    [转]Linux中set,env和export这三个命令的区别
    linux下echo命令详解(转)
  • 原文地址:https://www.cnblogs.com/HuZihu/p/12592696.html
Copyright © 2011-2022 走看看