hbase sqoop 实验_大数据案例-步骤三:Hive、MySQL、HBase数据互导

返回大数据案例首页

《大数据课程实验案例:网站用户行为分析—-步骤三:Hive、MySQL、HBase数据互导》

开发团队:厦门大学数据库实验室 联系人:林子雨老师 ziyulin@xmu.edu.cn

版权声明:版权归厦门大学数据库实验室所有,请勿用于商业用途;未经授权,其他网站请勿转载

本教程介绍大数据课程实验案例“网站用户行为分析”的第三个步骤,Hive、MySQL、HBase数据互导。在实践本步骤之前,请先完成该实验案例的第一个步骤——本地数据集上传到数据仓库Hive,和第二个步骤——Hive数据分析。这里假设你已经完成了前面的这两个步骤。

所需知识储备

数据仓库Hive概念与基本原理、关系数据库概念与基本原理、SQL语句、列族数据库HBase概念与基本原理

训练技能

数据仓库Hive的基本操作、关系数据库MySQL的基本操作、Sqoop工具的使用方法、HBase API的Java编程、Eclipse开发工具使用方法

任务清单

Hive预操作

使用Sqoop将数据从Hive导入MySQL

使用Sqoop将数据从MySQL导入HBase

使用HBase Java API把数据从本地导入到HBase中

一、准备工作

本教程需要安装Hive、MySQL、HBase和Sqoop。在前面的第一个步骤中,我们在安装Hive的时候就已经一起安装了MySQL(因为我们采用MySQL来存储Hive的元数据),所以,现在你只需要再安装HBase和Sqoop。

(1)请参考厦大数据库实验室博客Ubuntu安装HBase及常用操作,完成HBase的安装。本教程把HBase安装在了“/usr/local/hbase”目录下,采用伪分布式配置,也就是HBase会使用HDFS来存储数据。

(2)请参考厦大数据库实验室博客Ubuntu安装Sqoop,完成Sqoop的安装。本教程下载的是sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz,安装目录是“/usr/local/sqoop”。虽然这个sqoop是为hadoop2.0.4版本开发的,本教程Hadoop版本是2.7.1,但是,依然可以顺利使用。

二、Hive预操作

如果你还没有启动Hive,请首先启动Hive。

请登录Linux系统(本教程统一采用hadoop用户名登录系统),然后,打开一个终端(可以按快捷键Ctrl+Alt+T)。

本教程中,Hadoop的安装目录是“/usr/local/hadoop”,Hive的安装目录是“/usr/local/hive”。

因为需要借助于MySQL保存Hive的元数据,所以,请首先启动MySQL数据库,请在终端中输入下面命令:

service mysql start //可以在Linux的任何目录下执行该命令

由于Hive是基于Hadoop的数据仓库,使用HiveQL语言撰写的查询语句,最终都会被Hive自动解析成MapReduce任务由Hadoop去具体执行,因此,需要启动Hadoop,然后再启动Hive。

请执行下面命令启动Hadoop(如果你已经启动了Hadoop就不用再次启动了):

cd /usr/local/hadoop

./sbin/start-all.sh

然后,执行jps命令看一下当前运行的进程:

jps

如果出现下面这些进程,说明Hadoop启动成功了。

3765 NodeManager

3639 ResourceManager

3800 Jps

3261 DataNode

3134 NameNode

3471 SecondaryNameNode

下面,继续执行下面命令启动进入Hive:

cd /usr/local/hive

./bin/hive //启动Hive

通过上述过程,我们就完成了MySQL、Hadoop和Hive三者的启动。

启动成功以后,就进入了“hive>”命令提示符状态,可以输入类似SQL语句的HiveQL语句。

然后,在“hive>”命令提示符状态下执行下面命令:

1、创建临时表user_action

hive> create table dblab.user_action(id STRING,uid STRING, item_id STRING, behavior_type STRING, item_category STRING, visit_date DATE, province STRING) COMMENT 'Welcome to XMU dblab! ' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE;

这个命令执行完以后,Hive会自动在HDFS文件系统中创建对应的数据文件“/user/hive/warehouse/dblab.db/user_action”。

我们可以新建一个终端,执行命令查看一下,确认这个数据文件在HDFS中确实被创建了,请在新建的终端中执行下面命令:

cd /usr/local/hadoop

./bin/hdfs dfs -ls /user/hive/warehouse/dblab.db/user_action

可以看到如下结果:

-rwxr-xr-x 1 hadoop supergroup 15590786 2016-11-27 21:57 /user/hive/warehouse/dblab.db/user_action/000000_0

这说明,这个数据文件在HDFS中确实被创建了。注意,这个HDFS中的数据文件,在我们后面的“使用HBase Java API把数据从本地导入到HBase中”操作中会使用到。

2、将bigdata_user表中的数据插入到user_action(执行时间:10秒左右)

在第二个步骤——Hive数据分析中,我们已经在Hive中的dblab数据库中创建了一个外部表bigdata_user。下面把dblab.bigdata_user数据插入到dblab.user_action表中,命令如下:

hive> INSERT OVERWRITE TABLE dblab.user_action select * from dblab.bigdata_user;

请执行下面命令查询上面的插入命令是否成功执行:

hive>select * from user_action limit 10;

user_action-灌入数据成功

三、使用Sqoop将数据从Hive导入MySQL

1、启动Hadoop集群、MySQL服务

前面我们已经启动了Hadoop集群和MySQL服务。这里请确认已经按照前面操作启动成功。

2、将前面生成的临时表数据从Hive导入到 MySQL 中,包含如下四个步骤。

(1)登录 MySQL

请在Linux系统中新建一个终端,执行下面命令:

mysql –u root –p

为了简化操作,本教程直接使用root用户登录MySQL数据库,但是,在实际应用中,建议在MySQL中再另外创建一个用户。

执行上面命令以后,就进入了“mysql>”命令提示符状态。

(2)创建数据库

mysql> show databases; #显示所有数据库

mysql> create database dblab; #创建dblab数据库

mysql> use dblab; #使用数据库

注意:请使用下面命令查看数据库的编码:

mysql>show variables like "char%";

会显示类似下面的结果:

+--------------------------+----------------------------+

| Variable_name | Value |

+--------------------------+----------------------------+

| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | latin1 |

| character_set_filesystem | binary |

| character_set_results | utf8 |

| character_set_server | latin1 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+

8 rows in set (0.00 sec)

请确认当前编码为utf8,否则无法导入中文,请参考Ubuntu安装MySQL及常用操作修改编码。

下面是笔者电脑上修改了编码格式后的结果:

+--------------------------+----------------------------+

| Variable_name | Value |

+--------------------------+----------------------------+

| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | utf8 |

| character_set_filesystem | binary |

| character_set_results | utf8 |

| character_set_server | utf8 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+

8 rows in set (0.00 sec)

(3)创建表

下面在MySQL的数据库dblab中创建一个新表user_action,并设置其编码为utf-8:

mysql> CREATE TABLE `dblab`.`user_action` (`id` varchar(50),`uid` varchar(50),`item_id` varchar(50),`behavior_type` varchar(10),`item_category` varchar(50), `visit_date` DATE,`province` varchar(20)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

提示:语句中的引号是反引号`,不是单引号’。

创建成功后,输入下面命令退出MySQL:

mysql&

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值