`
jefferent
  • 浏览: 80339 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

数据快递员-Sqoop

 
阅读更多

    Hadoop目前来讲,多数还是应用于处理线下数据,其处理的数据来源大多还是传统的关系型数据库,在这种应用场景下,Hadoop平台类似于一个数据处理工厂,输入是原材料(原始数据),而输出是生产的产品(分析或挖掘后的数据)。由谁来运输原材料和产品呢,我们可以自建车队,自定义物流系统,但是有这么一家优质的快递公司-Sqoop提供了物流服务,而且是免费的(开源),怎能不用之?所以,这篇文章主要介绍Sqoop的基本原理和相关用法。

    Sqoop是一个开源工具,它允许用户将数据从关系型数据库抽取到Hadoop中,用于进一步的处理。抽取出的数据可以被MapReduce程序使用,也可以被其他类似于Hive的工具使用。一旦形成分析结果,Sqoop便可以将这些结果倒回数据库,供其他客户端使用。

    1. 导入数据

    要从关系型数据库中导入数据到HDFS,需要用到Sqoop的import工具,import工具会运行一个MapReduce作业,该作业会连接MySQL数据库并读取表中的数据。默认情况下,该作业会并行使用4个map任务来加速导入过程。每个任务都会将其所导入的数据写到一个单独的文件,但所有4个文件都位于同一个目录中。如下所示:

sqoop import --connect jdbc:mysql://localhost:dbname --table tablename -m 1

 

    -m指定map任务数量,如上面提到的,默认值为4。在上面的实例中,使用了连接字符串(jdbc:mysql://localhost:dbname ),表明需要从本地机器上的数据库中读取数据,如果使用分布式Hadoop集群,则在连接字符串中不能使用localhost,否则,与数据库不在同一台机器上运行的map任务都将无法连接到数据库。即使是从数据库服务器所在主机运行Sqoop,也需要为数据库服务器指定完整的主机名。

    默认情况下,Sqoop会将我们导入的数据保存为逗号分隔的文本文件。如果导入数据的字段内容中存在分隔符,则我们可以另外指定分隔符、字段包围字符和转义字符。使用命令行参数可以指定分隔符、文件格式、压缩以及对导入过程进行更加细粒度的控制。具体参见“Sqoop User Guide”。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics