hive简介——java连接和数据管理的方式

来源:互联网 发布:微信二级分销系统源码 编辑:程序博客网 时间:2024/05/19 04:02

在hadoop中hive担任的是数据仓库的角色,主要用来存储数据,而且存储的数据是不再修改的数据。hive集成了SQL技术,提供了类SQL的查询语句,称为HQL(和类SQL语句操作一样,在此就不再详细介绍)。在类SQL的增删改查操作中,HQL提供了INSERT(增)和SELECT(查)操作。
java操作hive就像java操作mysql一样使用jdbc。使用java操作hive时要先启动hive集群中的hiveserver2(指令:hive –service hiveserver2)

/*         * 驱动名:         *HiveServer—>org.apache.hadoop.hive.jdbc.HiveDriver           *HiveServer2—>org.apache.hive.jdbc.HiveDriver           */        /*         * 创建连接,<user>是hadoop用户         * HiveServer—>DriverManager.getConnection("jdbc:hive://<host>:<port>", "<user>", "");           *HiveServer2—>DriverManager.getConnection("jdbc:hive2://<host>:<port>", "<user>", "");          */        try {            Class.forName("org.apache.hive.jdbc.HiveDriver");        } catch (ClassNotFoundException e) {            e.printStackTrace();            System.exit(1);        }        //创建hive连接        Connection con=null;        try {       con=DriverManager.getConnection("jdbc:hive2://master:10000/hive/warehouse","<user>","<password>");        } catch (SQLException e) {            e.printStackTrace();            System.exit(1);        }

hive提供内部表(managed table)、外部表(external table)、分区(partition)、桶(bucket)四种数据管理方式。
1.内部表:每个表在HDFS中都有相应的目录来存储表中的数据(该目录可以在hive-site.xml文件中配置,(如:/hive/dbhome/user,/hive/dbhome是在配置文件中配置的用来存储数据的目录,user是用户的创建的一个表),删除该表示数据会被删除完。

create table user(u_id int,u_name String);

默认创建的是内部表
2.外部表:外部表和内部表相似,但是外部表的数据不是存储在自己所属的目录中,而是存储到别处的(该路径是在创建外部表是指定的),自己所属的目录存储的是该外部表对应的元数据,因此删除该表时,不会删除该表的数据而是删除该表的元数据。

create external table user_external(u_id int,u_name String) location '/hive/user_external'

location用来指定外部表数据存储的路径
3.分区:表的每一个分区对应表目录下相应的一个子目录,所有分区的数据存储在对应的子目录中。(如:前面创建的user表用u_id,u_name两个分区,那么分区u_id=10,u_name=hello对应的user表的目录为/hive/dbhome/u_id=10/u_name=hello,那么所有属于这个分区的数据都存储在给目录中),可以理解为按照列属性创建相应的子目录用来存储该列的数据。
4.桶:对指定的列值计算其hash,根据hash值切分数据,目的是为了并行,每一个桶对应一个文件(如:user表中列分散到16个桶中,先对u_id列计算hash值,hash值为0的数据就存储在/hive/dbhome/user/part-00000,hash值为1的就存储在/hive/dbhome/user/part-00001,依次类推),可以理解为按照其计算的hash值进行聚类存储在同一个文件中。

原创粉丝点击