hive编程指南--hive基础知识

来源:互联网 发布:栈的算法思想 编辑:程序博客网 时间:2024/05/16 05:21

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;详细描述表的信息结构。

0 0
原创粉丝点击