zoukankan      html  css  js  c++  java
  • hive第一篇----简介和使用客户端

    摘要by crazyhacking:•Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。•本质是将SQL转换为MapReduce程序的映射器

    详细的入门教程大家参考《hive指南》比较好。


      Hive是Hadoop项目中的一个子项目,由FaceBook向Apache基金会贡献,其中TaoBao也是其中一位使用者+贡献者,Hive被视为一个仓库工具,可以将结构化的数据文件映射为一张数据库表,并可以将sql语句转换为 MapReduce 任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。 
      
    Hive主要分为以下几个部分:
        1.用户接口 
           用户接口主要有三个:命令行(CLI),客户端(Client) 和 Web界面(WUI)。其中最常用的是 CLI,启动的时候,会同时启动一个 Hive 服务。Client 是 Hive 的客户端,用户连接至 Hive Server。在启动 Client 模式的时候,需要指出 Hive Server 所在节点,并且在该节点启动 Hive Server。 WUI 是通过浏览器访问 Hive的Web工具。
       2.元数据存储 
           Hive 将元数据存储在数据库中,如 MySQL或者Derby嵌入式数据库。若将元数据存储在MySQL中,在TBLS中可以看见你建立的所有表信息,Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
       3. 执行
        解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。
       4. HDFS存储
        Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from tbl 不会生成 MapRedcue 任务)。
    如图所示:
    Hive 架构

    Hive 元数据存储
        Hive 将元数据存储在 RDBMS 中,有三种模式可以连接到数据库:

        Single User Mode: 此模式连接到一个 In-memory 的数据库 Derby,一般用于 Unit Test,如图1
                                 Hive
       Multi User Mode:通过网络连接到一个数据库中,是最经常使用到的组合模式,如图2
                                 
       Remote Server Mode:用于非 Java 客户端访问元数据库,在服务器端启动一个 MetaStoreServer,客户端利用 Thrift 这个东东 通过 MetaStoreServer 访问元数据库。如图3
                                

    Hive 的启动方式
        hive  命令行模式,直接输入/hive/bin/hive的执行程序,或者输入 hive –service cli
        hive  web界面的启动方式,hive –service hwi  
        hive  远程服务 (端口号10000) 启动方式,nohup hive –service hiveserver  &

    Hive的SQL
    建表
        CREATE TABLE javabloger (foo INT, bar STRING);  
    插入
        LOAD DATA LOCAL INPATH '/work/hive/examples/files/kv1.txt' OVERWRITE INTO TABLE javabloger;
    查询
        SELECT a.* FROM javabloger a;

    Hive使用MySQL存放元数据
        可以参考一下这篇文章
        http://www.mazsoft.com/blog/post/2010/02/01/Setting-up-HadoopHive-to-use-MySQL-as-metastore.aspx  
        别忘了下载 MySQL 的JDBC驱动,推荐下载 mysql-connector-java-5.1.11.tar.gz 
       
    Hive 与 JDBC 

    导入hivelib下的所有jar包到IDE的classpath里面,还有hadoop中的 hadoop-0.20.2-core.jar包,即可运行下列代码:

    package com.javabloger.hive;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;

    public class HiveTestCase {

        public static void main(String[] args) throws  Exception {
            Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");
            
            String dropSQL="drop table javabloger";
            String createSQL="create table javabloger (key int, value string)";
            String insterSQL="LOAD DATA LOCAL INPATH '/work/hive/examples/files/kv1.txt' OVERWRITE INTO TABLE javabloger";
            String querySQL="SELECT a.* FROM javabloger a";
            
            Connection con = DriverManager.getConnection("jdbc:hive://192.168.20.213:10000/default", "", "");
            Statement stmt = con.createStatement();
            stmt.executeQuery(dropSQL);  // 执行删除语句
            stmt.executeQuery(createSQL);  // 执行建表语句
            stmt.executeQuery(insterSQL);  // 执行插入语句
            ResultSet res = stmt.executeQuery(querySQL);   // 执行查询语句
            
              while (res.next()) {
                System.out.println("Result: key:"+res.getString(1) +"  –>  value:" +res.getString(2));
            }

        }

    }

    转自:http://www.javabloger.com/article/apache-hive-2.html

  • 相关阅读:
    Java虚拟机详解(二)------运行时内存结构
    Java虚拟机简介
    JAVA 用数组实现 ArrayList
    Java 集合详解
    Spring+SpringMVC+Mybatis框架集成搭建教程
    Java代理
    单例模式(三)
    Node.js安装及环境配置
    Java 并发编程:核心理论(一)
    Java 并发编程:volatile的使用及其原理(二)
  • 原文地址:https://www.cnblogs.com/catkins/p/5270505.html
Copyright © 2011-2022 走看看