Mysql数据表创建问题?


《大数据课程实验案例:网站用户行为分析—-步骤三:Hive、MySQL、HBase数据互导》
开发团队:厦门大学数据库实验室 联系人:林子雨老师 ziyulin@
版权声明:版权归厦门大学数据库实验室所有,请勿用于商业用途;未经授权,其他网站请勿转载

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

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

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

本教程需要安装Hive、MySQL、HBase和Sqoop。在前面的第一个步骤中,我们在安装Hive的时候就已经一起安装了MySQL(因为我们采用MySQL来存储Hive的元数据),所以,现在你只需要再安装HBase和Sqoop。
(1)请参考厦大数据库实验室博客,完成HBase的安装。本教程把HBase安装在了“/usr/local/hbase”目录下,采用伪分布式配置,也就是HBase会使用HDFS来存储数据。

如果你还没有启动Hive,请首先启动Hive。
请登录Linux系统(本教程统一采用hadoop用户名登录系统),然后,打开一个终端(可以按快捷键Ctrl+Alt+T)。
因为需要借助于MySQL保存Hive的元数据,所以,请首先启动MySQL数据库,请在终端中输入下面命令:

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

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

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

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

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

通过上述过程,我们就完成了MySQL、Hadoop和Hive三者的启动。
启动成功以后,就进入了“hive>”命令提示符状态,可以输入类似SQL语句的HiveQL语句。

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

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

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

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

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

2、将前面生成的临时表数据从Hive导入到 MySQL 中,包含如下四个步骤。
请在Linux系统中新建一个终端,执行下面命令:

为了简化操作,本教程直接使用root用户登录MySQL数据库,但是,在实际应用中,建议在MySQL中再另外创建一个用户。
执行上面命令以后,就进入了“mysql>”命令提示符状态。

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

会显示类似下面的结果:

请确认当前编码为utf8,否则无法导入中文,请参考修改编码。
下面是笔者电脑上修改了编码格式后的结果:

提示:语句中的引号是反引号`,不是单引号’。
创建成功后,输入下面命令退出MySQL:

(4)导入数据(执行时间:20秒左右)
注意,刚才已经退出MySQL,回到了Shell命令提示符状态。下面就可以执行数据导入操作,

会提示你输入MySQL的root用户的密码,本教程中安装的MySQL数据库的root用户的密码是hadoop。
然后执行下面命令查询user_action表中的数据:

会得到类似下面的查询结果:

从Hive导入数据到MySQL中,成功!

之前我们已经启动了Hadoop集群、MySQL服务,这里请确认已经按照前面操作启动成功。这里我们再启动HBase服务。本教程中,HBase的安装目录是“/usr/local/hbase”,而且本教程中,HBase配置为使用HDFS存储数据。
请新建一个终端,执行下面命令:

启动成功后,就进入了“hbase>”命令提示符状态。

上面命令在HBase中创建了一个user_action表,这个表中有一个列族f1(你愿意把列族名称取为其他名称也可以,比如列族名称为userinfo),历史版本保留数量为5。
4、导入数据(执行时间:30秒左右)
下面新建一个终端,执行下面命令导入数据:

注意:IP部分改为本机IP地址或localhost。同时,HBase只支持十六进制存储中文。

执行上面的sqoop import命令以后,会得到类似下面的结果(省略了很多非重要的屏幕信息):

现在,再次切换到HBase Shell运行的那个终端窗口,在“hbase>”命令提示符下,执行下面命令查询刚才导入的数据:

因为有30万条记录,所以,我们用LIMIT只查询前10行的记录,会得到类似下面的结果:

注意,我们用limit10是返回HBase表中的前面10行数据,但是,上面的结果,从“行数”来看,给人一种错误,似乎不是10行,要远远多于10行。这是因为,HBase在显示数据的时候,和关系型数据库MySQL是不同的,每行显示的不是一行记录,而是一个“单元格”(如果无法理解,请参考厦大数据库实验室录制的在线课程视频《》)。

请首先确保启动了Hadoop集群和HBase服务。如果还没有启动,请在Linux系统中打开一个终端。
首先,按照下面命令启动Hadoop:

然后,按照下面命令启动HBase:

实际上,我们也可以编写Java程序,直接从HDFS中读取数据加载到HBase。但是,这里我们展示的是如何用JAVA程序把本地数据导入到HBase中。你只要把程序做简单修改,就可以实现从HDFS中读取数据加载到HBase。
首先,请将之前的user_action数据从HDFS复制到Linux系统的本地文件系统中,命令如下:

#将HDFS上的user_action数据复制到本地当前目录,注意'.'表示当前目录

我们这里采用Eclipse编写Java程序实现HBase数据导入功能。关于如何使用Eclipse编写Java程序调用HBase API,请参考厦大数据库实验室博客《》。
现在开始执行数据导入操作。
使用Java程序将数据从本地导入HBase中,导入前,请先清空user_action表。
请在之前已经打开的HBase Shell窗口中(也就是在“hbase>”命令提示符下)执行下面操作:

//删除以后再查看就没有记录了

下面就可以运行hadoop jar命令运行程序:

这个命令大概会执行3分钟左右,执行过程中,屏幕上会打印出执行进度,每执行1万条,对打印出一行信息,所以,整个执行过程屏幕上显示如下信息:

下面,再次切换到HBase Shell窗口,执行下面命令查询数据:

就可以得到类似下面的查询结果了:

到这里,第三个步骤的实验内容顺利结束,请继续访问第四个步骤《》

语句找出在服务器上当前存在什么数据库:

、选择你所创建的数据库:

首先查看刚才创建的数据库中存在什么表:

(说明刚才创建的数据库中还没有数据库表)

我要回帖

更多关于 MySQL创建数据表 的文章

 

随机推荐