1:Hive不是一个完整的数据库。Hadoop以及HDFS的设计本身约束和局限性得限制了Hive能够胜任的工作。其中最大的限制就是Hive不支持记录级别的更新
插入或者删除操作。但是用户可以通过查询生成新表或者将查询结果导入到文件中。同时,因为Hadoop是一个面向批处理的系统,而MapReduce任务的启
动过程需要消较长的时间,所以hive查询延时比较严重。传统数据库中秒级可以完成的查询,在Hive中,即使数据集相对较小,往往也需要执行更长的时间,
最后需要说明的是,hive不支持事物。
Hive组成模块
2:所有的命令和查询都会进入到Driver(驱动模块),通过该模块对输入进行编译,对需求的计算进行优化,然后按照指定的步骤zhixing(通常是启动多个MapReduce任务来执行)。当需要启动MapReduce任务时,hive本身是不会生成Java内置的,原生的mapper和reducer模块。
3:Metastore(元数据存储)是一个独立的关系型数据库(通常是一个MySql实例),Hive会在其中保存表模式和其他系统元数据
4:Hive 中所有的数据都存储在 HDFS 中,Hive 中包含以下数据模型:Table,External Table,Partition,Bucket。
5:所有的Hive客户端都需要一个metastoreservice(元数据服务),Hive使用这个服务来存储表模式信息和其他元数据信息,通常情况下会使用一个关系型数据库中的表来存储这些信息。默认情况下,hive会使用derby sql服务器,可以提供有限的,单进程的存储服务。对于集群来说,需要使用MySql或者类似的关系型数据库。
6:默认情况下,Hive是不允许用户删除一个包有表的数据库的。用户要么先删除数据库中的表,然后再删除数据库;要么在删除命令的最后加上关键字CASCADE
这样,可以使Hive自行删除数据库中的表。
Hive->DROP DATABASE IF EXISTS databasename CASCADE;
7:可以使用DESCRIBE tablename;详细描述表的信息结构。