Hive的元数据一样平常存储在关系型数据库中,如MySql;
底层存储用到的是HDFS分布式存储系统。它的优点:1.?大略易上手:供应了类SQL查询措辞HQL;2.可扩展:为超大数据集设计了打算/扩展能力(MR作为打算引擎,HDFS作为存储系统);3.供应统一的元数据管理;4.Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数:继续hive的UDF类,重写evaluate方法;5.容错:良好的容错性,节点涌现问题SQL仍可完成实行;
缺陷:1.Hive的HQL表达能力有限;2.效率比较低,自动天生的Mapreduce作业,常日情形下不足智能化,且调优比较困难;

Hive用户接口
1)HiveCLI(HiveCommandLine,Hive命令行),客户端可以直接在命令行模式下进行操作
2)HWI(HiveWebInterface,HiveWeb接口),Hive供应了更直不雅观的Web界面
3)hiveserver,Hive供应了Thrift做事,Thrift客户端目前支持C++/Java/PHP/Python/Ruby
Hive常用文件格式:
Textfile:默认格式,数据不做压缩,磁盘开销大,数据解析开销大;
SEQUENCEFILE:SequenceFile是HadoopAPI供应的一种二进制文件支持,其具有利用方便、可分割、可压缩的特点;
rcfile:RCFILE是一种行列存储相结合的存储办法。首先,其将数据按行分块,担保同一个record在一个块上,避免读一个记录须要读取多个block。其次,块数据列式存储,有利于数据压缩和快速的列存取;
parquet:ApacheParquet是Hadoop生态圈中一种新型列式存储格式,它可以兼容Hadoop生态圈中大多数打算框架;
Hive数据导入导出
Hive表中的数据,同时支持从本地数据导入、从其他表导入数据、导出数据到本地文件系统、导出数据到HDFS中
Hive基本语句
Hive建表语句基本跟关系型数据库建表语句相同,差异在于语句尾端指定了列分隔符:
ROWFORMATDELIMITEDFIELDSTERMINATEDBY‘,’
指定了列分隔符为“,”;
对付分区表,会有分区字段的解释:
PARTITIONEDBY(countrySTRING,stateSTRING)
用“country“、”state”两个字段分区;
以及指定存储文件的格式:
STOREDASTEXTFILE。
关于内连接、外连接和半连接:
几种连接差异大略概括为:内连接只显示了俩张表都存在的数据,而外连接则是显示出所有的数据,个中左连接是左外边的表输出完全数据。右外连接是右边的表输出完全数据,全外连接便是两张表的所有行全部输出。做半连接用来补充Hive相对付MySQL等语句缺失落的in/exists这样的子句,就用leftjoin代替,和leftjoin的差异在于右边的表数据不会加载进结果;
orderby和sortby:
ORDERBY会对查询结果集实行一个全局排序,所有的数据都通过一个reducer进行处理;SORTBY,其只会在每个reducer中对数据进行排序,也便是实行一个局部排序过程,生产中可以和DISTRIBUTEBY一起用,实现分区并排序。