作者: 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 将元数据存储在 RDBMS 中,有三种模式可以连接到数据库:
Single User Mode: 此模式连接到一个 In-memory 的数据库 Derby,一般用于 Unit Test,如图1
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入门课程计划目录 一、 课程计划 2 二、 数据仓库 5 1. 数据仓库概念 5 2. 场景案例:数据仓库为何而来?6
Hive入门经典教程 Apache Hive 淘宝团队验证
Hive编程指南+HIVE从入门到精通+Hive高级编程+Apache Oozie
Hive入门配套软件
通过讲解大数据概述、技术栈、数据处理与分析、开发工具、开发流程等内容,结合示例,帮助王子入门大数据开发。 本示例展示了如何使用Apache Spark进行数据处理和机器学习。通过读取CSV文件,对数据进行清洗和特征...
《Hive 口袋手册》是笔者根据自己对 Apache Hive 的知识点的理解汇总而成的小册子。这本小册子的撰写宗旨就两点 1. 常用;2. 概要。 这就注定了这本小册子并不是一本 “全面”、“详尽” 的书籍,它是一个对常用知识...
export HIVE_HOME=/usr/local/apache/hive/current export PATH= $PATH : $HIVE_HOME /bin 对于开发实例来说,这应该足够了,但是在某些情况下,我们将希望同时运行hive CLI,元存储甚至hiveserver2,为了做到这...
目前开源大数据计算引擎有很多选择,流计算如 Storm、Samza、Flink、Kafka Stream 等,批处 理如Spark、Hive、Pig、Flink 等。而同时支持流处理和批处理的计算引擎,只有两种选择:一个 是Apache Spark,一个是Apache ...
Apache Crunch 是基于 FlumeJava 实现的,...与 Pig 和 Hive 一样,Crunch 是为了降低 MapReduce 的入门成本。它们的区别是:Pig 是一个基于管道的框架,而 Crunch 则是一个 Java 库,它提供比 Pig 更高级别的灵活性。
另外,近年来涌现出诸多大数据应用组件,如HBase、Hive、Kafka、Spark、Flink等。开发者经常要用到不同的技术、框架、API、开发语言和SDK来应对复杂应用的开发。这大大增加了选择合适工具和框架的难度,开发者想要将...
一个使用 apache spark hive 的非常简单的 spring web 应用程序作者###入门首先,应将 spark 组件 jar(在安装 spark lib 文件夹中提供)添加到 maven 本地 repo。 该命令在下面关于 spark 依赖项的注释部分中给...
支 持 大 多 数 Hadoop 组 件 , 包 括 HDFS 、 MapReduce 、 Spark 、 Hive 、 Pig 、 Hbase 、 Zookeper、Sqoop等 大数据集群管理方式 分 为 手 工 方 式 ( Apache hadoop)和工具方式(Ambari + hdp 和 ...
《Hive编程指南》 《Hive编程指南》是⼀本Apache Hive的编程指南,对Hive的SQL⽅法HiveQL来汇总、查询和分析存储在Hadoop分布式⽂件系统上的⼤ 数据集合做了详细的介绍。 第三阶段,是针对分布式计算框架的学习,...
清晰的文字,是快速入门OLAP,学习使用kylin的入门神器 ps:让我填所属分类,好bt,要么你就整个全一点的数据库,分类多点,找了半天没有找到OLAP,KYLIN;让我没得选,只能选择大数据->hive了,比较相近了
带Spark 1.4.1和Hive,Pig客户端的vagrant-hadoop-2.6.0介绍Vagrant项目通过数据节点中的Hadoop v2.6.0,Spark 1.4.1以及apache hive和pig客户端启动了由5个虚拟机组成的集群node1:HDFS名称节点+ Spark Master node...
spark入门级资料推荐,开始是介绍简装 编译运行等基础介绍,从第五章开始 Hive介绍及部署 Hive实战 SparkSQL介绍 实战 深入了解运行计划及调优 SparkStreaming原理介绍 实战 SparkMLlib机器学习及SparkMLlib简介 ...
Apache ActiveMQ入门 如何运行应用程序: 提炼 跑步 bin/activemq start 启动 JMS术语 提供者,即面向消息的中间件或充当代理的应用程序,示例之一是Apache ActiveMQ,RabitMQ,Hive MQTT,IBM MQ,JBoss ...
对于Flume学习上的总结,包含: 1.Linux环境Flume安装配置及...2.Apache Flume 入门教程。 3.flume的部署和avro source测试;netcast source测试。 4.Flume部署及使用。 5.Flume监听本地Linux-hive日志文件采集到HDFS。
兼容 Apache Hive 参考 数据类型 NaN 语义 Structured Streaming MLlib(机器学习) 机器学习库(MLlib)指南 ML Pipelines(ML管道) Extracting, transforming and selecting features(特征的提取,转换...