整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

15.3 一个导入的例子

在安装了 Sqoop之后,可以用它将数据导入Hadoop。在本章的所有示例中 我们都使用支持很多平台的易用数据库系统MySQL作为外部数据源。

安装和配置 MySQL 时,可以参考                      上的

文档,特别是第2章应该很有帮助。基于Debian的Linux系统(如Ubuntu) 的用户可以通过键入 sudo apt-get install mysql-clientmysql-

 

server进行安装;RedHat的用户可以通过键入sudo yum install mysql mysql-server 进行安装。

现在,MySQL已经安装好,让我们先登录,然后创建一个数据库(范例15-1)。

范例15-1.创建一个新的MySQL数据库模式

image.png

前面的密码提示要求你输入root用户的密码,就像root用户通过密码进行 shell登录一样。如果你正在使用Ubuntu或其他不支持root直接登录的 Linux系统,则键入安装MySQL时设定的密码。

在这个会话中,我们创建了一个新的名为hadoopguide的数据库模式,本 章中我们将一直使用这个数据库模式,接着我们允许所有本地用户査看和 修改hadoopguide模式的内容|最后,关闭这个会话。®

现在让我们登录到数据库(这次不是作为root,而是你自己),然后创建一个 将被导入HDFS的表(范例15-2)。

范例15-2.填充数据库

image.png

在上面的示例中,我们创建了一个名为widgets的新表。在本章更多的例 子中我们都将使用这个虚构的产品数据库。widgets表有几个不同数据类 型的字段。

现在让我们使用Sqoop将这个-导入HDFS:

image.png

Sqoopimport工具会运行一个MapReduce作业,该作业会连接MySQL 数据库并读取表中的数据。默认情况下,该作业会并行使用4map任务 来加速导入过程。每个任务都会将其所导入的数据写到一个单独的文件, 但所有4个文件都位于同一个目录中。在本例中,由于我们知道只有三行 可以导入的数据,因此指定Sqoop只使用一个map任务(-m 1),这样我们 只得到一个保存在HDFS中的文件。

image.png

在默认情况下,Sqoop会将我们导入的数据保存为逗号分隔的文本文件。如 果导入数据的字段内容中存在分隔符,我们可以另外指定分隔符、字段包 围字符和转义字符。使用命令行参数可以指定分隔符、文件格式、压缩以 及对导入过程进行更细粒度的控制,Sqoop自带的《Sqoop使用指南》*或 Sqoop 的在线帮助(sqoop help import,在 CDH 中使用 man sqoopimport可以找到对相关参数的描述。

文本和二进制文件格式

Sqoop可以将数据导入成几种不同的格式。文本文件(默认)是一种人类可读 的数据表示形式,并且是平台独立和最简单的数据格式。但是,文本文件 不能保存二进制字段(例如数据库中类型为VARBINARY的列),并且在区分 null值和字符串null时可能会出现问题(尽管使用–nullstring选项可

以控制空值的表示方式)。

为了处理这些情况,应该使用SqoopSequenceFile格式或Avro格式。 ① 为 http://sqoop.apache.org/0

AvroSequenceFile格式的文件能够为导入的数据提供最精确的表示方 式,同时还允许对数据进行压缩,并支持MapReduce并行处理同一文件的 不同部分。然而,Sqoop的目前版本还不能将AvroSequenceFile文件加 载到Hive中(尽管可以手动地将Avro数据文件加载到Hive中)。 SequenceFile文件格式的最后一个缺点是它只支持java语言,而Avro数据 文件却可以被很多种语言处理。

转载请注明:全栈大数据 » 15.3 一个导入的例子

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址