大数据工具篇之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整合完整教程的更多相关文章

  1. 大数据工具篇之Hive与HBase整合完整教程

    大数据工具篇之Hive与HBase整合完整教程 一.引言 最近的一次培训,用户特意提到Hadoop环境下HDFS中存储的文件如何才能导入到HBase,关于这部分基于HBase Java API的写入方 ...

  2. 大数据工具篇之flume1.4-安装部署指南

    一.引言 flume-ng是一个分布式.高可靠和高效的日志收集系统,flume-ng是flume的新版本的意思,其中“ng”意为new generate(新一代),目前来说,flume-ng 1.4是 ...

  3. [转载]Java程序员使用的20几个大数据工具

    最近我问了很多Java开发人员关于最近12个月内他们使用的是什么大数据工具. 这是一个系列,主题为: 语言web框架应用服务器SQL数据访问工具SQL数据库大数据构建工具云提供商今天我们就要说说大数据 ...

  4. Java程序员使用的20几个大数据工具

    最近我问了很多Java开发人员关于最近12个月内他们使用的是什么大数据工具. 这是一个系列,主题为: 语言 web框架 应用服务器 SQL数据访问工具 SQL数据库 大数据 构建工具 云提供商 今天我 ...

  5. Java程序员在用的大数据工具,MongoDB稳居第一!

    据日前的一则大数据工具使用情况调查,我们知道了Java程序猿最喜欢用的大数据工具. 问题:他们最近一年最喜欢用什么工具或者是框架? 受访者可以选择列表中的选项或者列出自己的,本文主要关心的是大数据工具 ...

  6. 大数据系列之数据仓库Hive安装

    Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...

  7. 大数据系列之数据仓库Hive原理

    Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...

  8. 大数据工具——Splunk

    Splunk是机器数据的引擎.使用 Splunk 可收集.索引和利用所有应用程序.服务器和设备(物理.虚拟和云中)生成的快速移动型计算机数据 .从一个位置搜索并分析所有实时和历史数据. 使用 Splu ...

  9. 【Social listening实操】如何运用免费的大数据工具获得行业洞察?

    本文转自知乎 作者:苏格兰折耳喵 ----------------------------------------------------- 当我们想要创业却对市场行情不甚了解,该如何迅速了解市场行情 ...

随机推荐

  1. hdu 4864 Task---2014 Multi-University Training Contest 1

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4864 Task Time Limit: 4000/2000 MS (Java/Others)    M ...

  2. zoj 3823 Excavator Contest(结构体)

    题目链接:zoj 3823 Excavator Contest 题目大意:一个人开着挖掘机要在N*N的格子上面移动.要求走全然部的格子.而且转完次数要至少为n*(n-1) - 1次, 而且终点和起点必 ...

  3. AFNetWorking POST Multi-Part Request 上传图片

    这些天来,做图片上传的时候,我遇到一个问题.对我来说,这只是一个附加的图片将请求超时,这里是代码: AFHTTPRequestOperationManager *manager = [AFHTTPRe ...

  4. linux终奌站 信息 格式 更改 /etc/bashrc

    gedit /etc/bashrc shell环境下默认的特殊符号意义: \d :代表日期,格式为weekday month date,比如:"Sun Sep 18" \H :完整 ...

  5. HTML5 Web SQL Database 与 Indexed Database 的 CRUD 操作

    http://www.ibm.com/developerworks/cn/web/1210_jiangjj_html5db/ 版权声明:本文博客原创文章,博客,未经同意,不得转载.

  6. Codeforces Round #243 (Div. 1)-A,B,C-D

    此CF真是可笑.. . 由于早晨7初始点,因此,要做好CF时间已经17没有休息一小时,加上中午5小时耐力赛. 心里很清楚.是第一个问题的时候,几乎被解读为寻求最大的领域和.然后找到一个水体,快速A降. ...

  7. android USB OTG功能实现

    一个.检查HW概要,确认是否支持OTG特征(vbus无论是动力,IDDIG pin连接是否正确) 两.如果HW确认支持OTG特征,然后根据以下方法被打开USB OTG功能及实现山: 如何打开USB O ...

  8. VS2012编写C语言项目

    原文:VS2012编写C语言项目 这两天看了一下C语言方面的知识,大学的时候使用的Turbo C对于我来说已经是很久之前的事情了,编写C语言的还有VC++,不过这货在64的表现实现是很让人失望,还是用 ...

  9. Unofficial Microsoft SQL Server Driver for PHP (sqlsrv)非官方的PHP SQL Server 驱动

    原文 Unofficial Microsoft SQL Server Driver for PHP (sqlsrv) Here are unofficial modified builds of Mi ...

  10. Django教程汇总

    Django基础教程 被解放的姜戈01 初试天涯 被解放的姜戈02 庄园疑云 被解放的姜戈03 所谓伊人 被解放的姜戈04 各取所需 被解放的姜戈05 黑面管家 被解放的姜戈06 假作真时 Djang ...