`
landyer
  • 浏览: 142558 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Apache Hive入门1

阅读更多

作者: H.E. | 您可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 
网址: http://www.javabloger.com/article/apache-hive-jdbc-mapreduce.html

 

   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 

导入hive\lib下的所有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));
        }

    }

}

Hadoop学习之旅正在进行中,正在走向Hive的路上,目前只对Hive一些简单的操作和整体结构有所了解,更深入的知识正在学习ing。。。。

 

相关文章:
Hive入门3–Hive与HBase的整合 
Apache Hive入门2 
Apache Hive入门1

 

–end–

分享到:
评论

相关推荐

    第1章 数据仓库基础与Apache Hive入门1

    在本章中,我们将深入探讨数据仓库的基础知识以及如何通过Apache Hive进行初步探索。数据仓库是现代企业数据管理和分析的核心,而Hive作为大数据处理的重要工具,为数据仓库提供了便捷的查询和分析能力。 首先,让...

    Hive 入门教程-Apache Hive入门介绍与HQL语法解析

    ### Apache Hive 入门教程详解 #### 一、Hive简介与背景 Hive 是一个构建在 Hadoop 之上的数据仓库基础设施。它的设计目的是为了简化大数据的存储、查询和分析过程。通过引入类似 SQL 的查询语言(HQL),使得传统...

    大数据系列-Hive入门与实战.pptx

    大数据系列-Hive入门与实战 Hive 是什么? ---------------- Hive 是一个构建在 Hadoop 之上的数据仓库平台,能够将 SQL 语句转译成 MapReduce 作业,并在 Hadoop 集群上执行。Hive 表是 HDFS 的一个文件目录,一...

    Intro to Apache hive

    ### Apache Hive 入门 #### 动机与背景 Apache Hive 的起源可以追溯到 Facebook,在那里数据最初通过夜间定时任务收集并存储在 Oracle 数据库中。随着数据量的增长(从 2006 年的几十 GB 增长到 2007 年每天新增 1...

    hive入门文档笔记

    ### Hive入门文档笔记 #### 一、Hive简介与安装配置 Hive 是一个构建在 Hadoop 之上的数据仓库工具,它通过提供 SQL 查询功能,使得用户可以更方便地处理存储在 Hadoop 分布式文件系统(HDFS)中的大规模数据集。...

    Hive从入门到精通资源.zip

    资源包中的“apache-hive-1.2.1-bin.tar.gz”是Hive的安装包,解压后需要进行配置,包括设置Hive的环境变量、配置Hadoop的相关路径、以及配置Hive的metastore(元数据存储)。在实际操作中,通常会将metastore服务...

    Apache Hadoop:Hadoop数据仓库Hive入门与应用.docx

    Apache Hadoop:Hadoop数据仓库Hive入门与应用.docx

    apache-hive-2.3.3-bin.7z

    Apache Hive 是一个基于Hadoop...综上所述,"apache-hive-2.3.3-bin.7z"包含了完整的Apache Hive 2.3.3版本,提供了高效的数据仓库解决方案,适用于大数据的分析和查询,尤其适合大数据初学者和开发者快速入门和实践。

    大数据 Hive 入门例子和代码

    大数据 Hive 入门例子和代码 第1章:Hive 简介 Hive 是一个数据仓库软件项目,用于对存储在分布式存储系统(如Hadoop)中的大数据进行查询和管理。Hive 定义了一种类似于 SQL 的查询语言,称为 HiveQL,它允许用户...

    Hive编程指南+HIVE从入门到精通+Hive高级编程+Apache Oozie

    1. **设置Hive环境**: 安装Hive、配置Hive-site.xml、初始化元数据存储。 2. **数据加载与导出**: 使用LOAD DATA命令加载数据,使用EXPORT/IMPORT操作迁移数据。 3. **性能优化**: 通过分区、桶、压缩和选择合适的...

    Hive新手学习资料之Hive入门与实战.Hive用户手册hive函数大全中文版打包最新版本

    Hive入门与实战.pdf hive函数大全.doc Hive用户手册中文版.pdf Hive用户指南-V1.1.doc Hive是什么 Hive是一个基于Apache Hadoop的数据仓库。对于数据存储与处理,Hadoop提供了主要的扩展和容错能力。 Hive设计的...

    hive入门到精通.txt

    根据提供的文件信息“hive入门到精通”,我们可以详细探讨Hive的相关知识点,包括其基础概念、安装配置、数据操作语言(DML)与数据定义语言(DDL)等核心内容。 ### Hive基础知识 1. **Hive简介**: - Apache Hive...

    hive入门资料

    ### Hive入门资料详解 #### 一、Hive的层次结构与基本操作 ##### 进入Hive 要开始使用Hive,首先需要登录到网关机,并通过命令`hive`来启动Hive命令行界面。 ##### 查看所有数据库 在Hive命令行中输入`show ...

    高级软件人才培训专家-Hadoop课程资料-4-第四章 - 分布式SQL计算 Hive 入门

    ### 高级软件人才培训专家-Hadoop课程资料-4-第四章 - 分布式SQL计算 Hive 入门 #### Apache Hive 概述 Apache Hive 是一款面向大数据处理的分布式 SQL 计算工具,旨在简化 Hadoop 生态系统中的数据查询与分析流程...

    大数据系列Hive入门与实战.pptx

    大数据系列Hive入门与实战 Hive 是一个基于 Hadoop 的数据仓库平台,提供了类似于 SQL 语句的查询接口,自动将查询语句编译转化为 MapReduce 作业后在 Hadoop 上执行,这使得分析人员可以更方便地使用 Hadoop 进行...

    大数据开发Spar、Hive入门

    通过讲解大数据概述、技术栈、数据处理与分析、开发工具、开发流程等内容,结合示例,帮助王子入门大数据开发。 本示例展示了如何使用Apache Spark进行数据处理和机器学习。通过读取CSV文件,对数据进行清洗和特征...

Global site tag (gtag.js) - Google Analytics