Hive 是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,
可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在
Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 QL,
它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发
者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无
法完成的复杂的分析工作。
hive和普通数据库的区别
hive的元数据一般由关系型数据库mysql或者derby来存储
首先,Hive 没有专门的数据存储格式,也没有为数据建立索引,用户可以
非常自由的组织 Hive 中的表,只需要在创建表的时候告诉 Hive 数据中的列分
隔符和行分隔符,Hive 就可以解析数据。
其次,Hive 中所有的数据都存储在 HDFS 中,Hive 中包含以下数据模型:Table(内部表),
External Table(外部表),Partition(分区),Bucket(分桶)。
内部表和外部表的区别在于内部表是把hadoop上对应的数据文件剪切到hive中,删除的时候原数据文件随之删除,外部表是建立一个映射,让表映射到指定的数据文件的位置,删除的时候只是删除映射,原数据文件不会删除
分区和分桶的区别,分区分桶都是为了减少数据的扫描量,加快查询;分区的时候,表的数据会根据分区字段存储到不同的文件夹下,一个分区下分区值相同;分桶的时候是根据分桶字段的hash值进行分类,然后存到指定的文件中,桶的数量就是文件的数量,分桶可以解决小文件过多的问题