大数据工具篇之Hive与MySQL整合完整教程
一、引言
Hive元数据存储可以放到RDBMS数据库中,本文以Hive与MySQL数据库的整合为目标,详细说明Hive与MySQL的整合方法。
二、安装驱动
MySQL最新的Java驱动版本为:mysql-connector-java-5.1.28-bin.jar,下载后拷贝到:Hive/Lib目录。
三、安装MySQL
3.1 版本
RHEL5+mysql-5.5.35-1.i386.rpm
3.2 顺序
MySQL-shared-compat-5.5.35-1.rhel15.i386.rpm
MySQL-server-5.5.35-1.rhel5.i386.rpm
MySQL-client-5.5.35-1.rhel5.i386.rpm
四、配置文件
修改Hive配置文件Hive-site.xml,修改后的结果如下所示:

1 <property>
2 <name>javax.jdo.option.ConnectionURL</name>
3 <value>jdbc:mysql://localhost:3306/hivedb?characterEncoding=UTF-8</value>
4 <description>JDBC connect string for a JDBC metastore</description>
5 </property>
6
7 <property>
8 <name>javax.jdo.option.ConnectionDriverName</name>
9 <value>com.mysql.jdbc.Driver</value>
10 <description>Driver class name for a JDBC metastore</description>
11 </property>
12
13 <property>
14 <name>javax.jdo.PersistenceManagerFactoryClass</name>
15 <value>org.datanucleus.jdo.JDOPersistenceManagerFactory</value>
16 <description>class implementing the jdo persistence</description>
17 </property>
18
19 <property>
20 <name>javax.jdo.option.DetachAllOnCommit</name>
21 <value>true</value>
22 <description>detaches all objects from session so that they can be used after transaction is committed</description>
23 </property>
24
25 <property>
26 <name>javax.jdo.option.NonTransactionalRead</name>
27 <value>true</value>
28 <description>reads outside of transactions</description>
29 </property>
30
31 <property>
32 <name>javax.jdo.option.ConnectionUserName</name>
33 <value>root</value>
34 <description>username to use against metastore database</description>
35 </property>
36
37 <property>
38 <name>javax.jdo.option.ConnectionPassword</name>
39 <value>root</value>
40 <description>password to use against metastore database</description>
41 </property>

五、结果展示
安装完成以后,通过访问mysql客户端,可以用来验证是否安装成功。注意与普通关系型数据创建表格后的区别。
mysql>show tables;

1 +----------------+
2 | Tables_in_hive |
3 +----------------+
4 | BUCKETING_COLS |
5 | COLUMNS |
6 | DBS |
7 | PARTITION_KEYS |
8 | SDS |
9 | SD_PARAMS |
10 | SEQUENCE_TABLE |
11 | SERDES |
12 | SERDE_PARAMS |
13 | SORT_COLS |
14 | TABLE_PARAMS |
15 | TBLS |
16 +----------------+

六、注意事项
曾经有人单独找我咨询过这个问题:为何无法在Hive中指定使用哪个MySQL数据库?这里面有一个需要说明的地方是Hive的数据库的概念不同于RDBMS数据库,MySQL数据库的指定是基于配置文件的,但是Hive的数据库只是一个命名空间号,类似分组的概念。hive中的数据库可以在使用MySQL数据库中,通过Select * from DBS查看到。
C++ Programming with TDD之一:GMOCK框架简介
所谓测试驱动开发,英文全称Test-Driven Development,简称TDD,是一种不同于传统软件开发流程的新型的开发方法。就是在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。然后循环进行添加其他功能,直到完成全部功能的开发。
Google Mock的设计灵感来源于jMock和EasyMock,它的作用是帮你快速地做出一个接口的仿制品。如果你的设计依赖其它的类,而这些类还没有完成或非常昂贵(如数据库);如果你要测试你的模块与其它模块是否能正确结合,并想了解其交互过程;那么Google Mock就能帮助你。
PS: The official Google Mock site is https://code.google.com/p/googlemock/. The version used for building the examples is Google Mock 1.7.0.
一、 环境配置
gmock1.7.0中使用了C++11新标准,所以我们的编译器需要支持C++11才行,在Linux系统中,即需要安装GCC4.7/G++4.7,我的测试环境是Ubuntu12.04,默认安装的是GCC4.6/G++4.6,所以需要在安装编译gmock之前首先安装GCC4.7/G++4.7,这里也顺便把安装的过程加上,有需要的猿们可以参考:

1 sudo add-apt-repository ppa:ubuntu-toolchain-r/test
2 sudo apt-get update
3 sudo apt-get install gcc-4.7 g++-4.7
安装成功后我们如果要使用gcc-4.7&g++-4.7来编译的话,我们就得把gcc改为gcc-4.7,g++同理,改为g++-4.7来进行编译.如果你想直接使用gcc-4.7而不改变编译时gcc改为gcc-4.7的话,我们就可以更改一下gcc的软链接:
1 sudo rm /usr/bin/gcc
2 sudo ln -s /usr/bin/gcc-4.7 /usr/bin/gcc
3 sudo rm /usr/bin/g++
4 sudo ln -s /usr/bin/g++-4.7 /usr/bin/g++
PS: 在平时使用的时候如果使用C++0X标准,记得加-std=c++11。
二、gmock安装
下载好gmock之后,解压,然后切换到gmock源码所在目录,使用如下命令安装:
1 mkdir mybuild
2 cd mybuild
3 cmake ..
4 make
同时,你还需要编译google test,其包含在gmock源码下的gtest文件夹,切换到gtest文件夹,然后用相同的方式安装即可。
三、实例
Soundex.h文件:

1 #ifndef Soundex_h
2 #define Soundex_h
3 #include <string>
4
5 class Soundex
6 {
7 public:
8 std::string encode(const std::string& word) const {
9 return zeroPad(word);
10 }
11
12 private:
13 std::string zeroPad(const std::string& word) const {
14 return word + "000";
15 }
16 };
17
18 #endif

SoundexTest.cpp文件:

1 #include "gmock/gmock.h"
2 #include "Soundex.h"
3
4 using namespace testing;
5
6 class SoundexEncoding: public Test {
7 public:
8 Soundex soundex;
9 };
10
11 TEST_F(SoundexEncoding, RetainsSoleLetterOfOneLetterWord) {
12 ASSERT_THAT(soundex.encode("A"), Eq("A000"));
13 }
14
15 TEST_F(SoundexEncoding, PadsWithZerosToEnsureThreeDigits) {
16 ASSERT_THAT(soundex.encode("I"), Eq("I000"));
17 }

main.cpp文件:

1 #include "gmock/gmock.h"
2
3 int main(int argc, char** argv) {
4 testing::InitGoogleMock(&argc, argv);
5 return RUN_ALL_TESTS();
6 }

CMakeLists.txt文件:

1 project(chapterFirstExample)
2 cmake_minimum_required(VERSION 2.6)
3
4 include_directories($ENV{GMOCK_HOME}/include $ENV{GMOCK_HOME}/gtest/include)
5 link_directories($ENV{GMOCK_HOME}/mybuild $ENV{GMOCK_HOME}/gtest/mybuild)
6 add_definitions(-std=c++0x)
7 set(CMAKE_CXX_FLAGS "${CMAXE_CXX_FLAGS} -Wall")
8
9 set(sources
10 main.cpp
11 SoundexTest.cpp)
12 add_executable(test ${sources})
13 target_link_libraries(test pthread)
14 target_link_libraries(test gmock)
15 target_link_libraries(test gtest)

好了,编译执行吧,执行结果如下:

好了gmock的使用就介绍到这里,需要深入研究的童鞋可以参考官方文档。这里最重要的不是学会使用gmock,而是要在学会使用gmock之后养成TDD开发的好习惯.
Test-driving vs Testing: Using a testing technique, you would seek to exhaustively analyze the specification in question (and possibly the code) and devise tests that exhaustively cover the behavior. TDD is instead a technique for driving the design of the code. In TDD, you write tests to describe the next behavior needed.
大数据工具篇之Hive与MySQL整合完整教程的更多相关文章
- 大数据工具篇之Hive与HBase整合完整教程
大数据工具篇之Hive与HBase整合完整教程 一.引言 最近的一次培训,用户特意提到Hadoop环境下HDFS中存储的文件如何才能导入到HBase,关于这部分基于HBase Java API的写入方 ...
- 大数据工具篇之flume1.4-安装部署指南
一.引言 flume-ng是一个分布式.高可靠和高效的日志收集系统,flume-ng是flume的新版本的意思,其中“ng”意为new generate(新一代),目前来说,flume-ng 1.4是 ...
- [转载]Java程序员使用的20几个大数据工具
最近我问了很多Java开发人员关于最近12个月内他们使用的是什么大数据工具. 这是一个系列,主题为: 语言web框架应用服务器SQL数据访问工具SQL数据库大数据构建工具云提供商今天我们就要说说大数据 ...
- Java程序员使用的20几个大数据工具
最近我问了很多Java开发人员关于最近12个月内他们使用的是什么大数据工具. 这是一个系列,主题为: 语言 web框架 应用服务器 SQL数据访问工具 SQL数据库 大数据 构建工具 云提供商 今天我 ...
- Java程序员在用的大数据工具,MongoDB稳居第一!
据日前的一则大数据工具使用情况调查,我们知道了Java程序猿最喜欢用的大数据工具. 问题:他们最近一年最喜欢用什么工具或者是框架? 受访者可以选择列表中的选项或者列出自己的,本文主要关心的是大数据工具 ...
- 大数据系列之数据仓库Hive安装
Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...
- 大数据系列之数据仓库Hive原理
Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...
- 大数据工具——Splunk
Splunk是机器数据的引擎.使用 Splunk 可收集.索引和利用所有应用程序.服务器和设备(物理.虚拟和云中)生成的快速移动型计算机数据 .从一个位置搜索并分析所有实时和历史数据. 使用 Splu ...
- 【Social listening实操】如何运用免费的大数据工具获得行业洞察?
本文转自知乎 作者:苏格兰折耳喵 ----------------------------------------------------- 当我们想要创业却对市场行情不甚了解,该如何迅速了解市场行情 ...
随机推荐
- Hadoop之——HBase注意事项
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46447573 1.HBase(NoSQL)的数据模型 1.1 表(table) 存 ...
- AssetManager asset使用
Android 该系统提供了一个程序为每个新的设计/assets文件夹.保存该文件在此文件夹可以在一个程序被打包./res 和/assets所不同的是,android不/assets下生成的文件ID. ...
- SharePoint 2013 如何使用Silverlight
1.打开VS,创建一个Silverlight计划.例如下面的附图: 2.配置选择默认的,当然也能够不勾选Host Application,例如以下图: 3.加入Silverlight控件,2个labe ...
- tortoise svn无法识别subversion check向下代码来解决
使用eclipse小工具subversion check代码后,tortoise svnclient(版本号1.8.8)无法识别,不显示svn图标. 根据每个试验后的线上不实际的解决方案.试过的方法: ...
- NYOJ 105 其余9个
九的余数 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描写叙述 如今给你一个自然数n,它的位数小于等于一百万,如今你要做的就是求出这个数整除九之后的余数. 输入 第一行有一 ...
- Android学习----异常(2):Please ensure that adb is correctly located at ' ... '
打开任务管理器,在后台进程中找到 kadb,结束这个进程,重新启动eclipse.
- CSharp设计模式读书笔记(23):模板方法模式(学习难度:★★☆☆☆,使用频率:★★★☆☆)
模板方法模式:定义一个操作中算法的框架,而将一些步骤延迟到子类中.模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 模式角色与结构: 实现代码: using System; ...
- CQRS(命令查询职责分离)和 EDA(事件驱动架构)
转载CQRS(命令查询职责分离)和 EDA(事件驱动架构) 上一篇:<IDDD 实现领域驱动设计-SOA.REST 和六边形架构> 阅读目录: CQRS-命令查询职责分离 EDA-事件驱动 ...
- TRILL浅析
1 TRILL概述 TRILL的全称就是Transparent Interconnection of Lots of Links,顾名思义,其本质就是将非常多条链路透明地组织在一起,以致于上层IP应用 ...
- 利用webBrowser获取框架内Html页面内容
原文:利用webBrowser获取框架内Html页面内容 利用webBrowser获取页面比较简单,MSDN下有示例,在这里不必多说. 可是一些 HTML 文档由“框架”构成,或可以存放它们自己独特 ...