美文网首页
2.1sqoop从整张表中导入数据

2.1sqoop从整张表中导入数据

作者: NEO_X | 来源:发表于2019-05-31 08:43 被阅读0次

Apache Sqoop Cookbook 英文版-翻译学习!!

Sqoop 主要的命令

19/05/31 05:49:02 INFO sqoop.Sqoop: Running Sqoop version: 1.4.5.2.2.4.2-2
usage: sqoop COMMAND [ARGS]

Available commands:
  codegen            Generate code to interact with database records
  create-hive-table  Import a table definition into Hive
  eval               Evaluate a SQL statement and display the results
  export             Export an HDFS directory to a database table
  help               List available commands
  import             Import a table from a database to HDFS
  import-all-tables  Import tables from a database to HDFS
  job                Work with saved jobs
  list-databases     List available databases on a server
  list-tables        List available tables in a database
  merge              Merge results of incremental imports
  metastore          Run a standalone Sqoop metastore
  version            Display version information

See 'sqoop help COMMAND' for information on a specific command.

在接下来的几节中,致力于从关系型数据,数据仓库中传输数据到Hadoop系统中。在本节中将演示和简介在不同的情况下将如何将关系型数据中一张表导入到Hadoop中。

接下来将会通过实例来讲解sqoop的不同的特征,而这些的实例可以直接拷贝到运行。为了能够实现这点,首先需要安装一个关系型数据库。本书使用的是Mysql数据库,这个数据库用户名和密码都是sqoop,连接使用的数据库名也为sqoop。
你可以使用mysql.credentials.sql脚本来进行创建这个数据库,这个脚本可以从和本书关联的Github工程中下载。

你可以改变本示例,作用于不同的数据库系统,进一步的细节在本书后面说明。由于sqoop主要的关注在数据的传输,
,所以在进行示例演示前,先确保在关系型数据库中已有测试数据,所以先创建了一张cities表,其中包含少许的城市信息,可以使用 mysql.tables.sql脚本来构造,这个脚本可以从上文已经提到的Github project项目中下载。

chapter2_cities.png

2.1传送整张表

问题

在关系型数据库中有一张表,需要将这张表的内容传输到Hadoop的HDFS文件系统上。

解决方案

通过Sqoop导入一张表非常简单:使用 import 操作 ,指定数据库和认证信息和需要导出表的名字,如下:

sqoop import \
    --connect jdbc:mysql://localhost:3306/sqoop \
    --username sqoop \
    --password sqoop \
    --table cities
chapter2_import.png

讨论

导入整张表,是使用sqoop最普遍和直接的方式的之一了。执行了上述的命令后,将会生成一个对应的csv文件,
在这个csv文件的每一行对应数据库中的一行。

chapter2_importdatalike.png

在上述示例中,sqoop调用过程中传递了一系列的参数,接下来将对这些参数细节进行说明.
在sqoop可执行程序后第一个参数是 import , import指出了合适的tool命令。对于import tool命令
被用于在你想从关系数据中将数据导入到Hadoop中的时候。稍后将讨论export导出命令,这个命令的作用是相反的。
接下来的一个参数 --connect 中包含了定位到数据库的JDBC URL地址。对于每个数据的URL都是特有的,
所以需要查阅数据库操作文档,以使用正确的url格式。在连接url后的两个参数 --username--password , 这两个参数是sqoop在连接数据库时需要使用的凭据。
最后一个参数 --table 是传输数据的表名。

现在初步的明确了各个参数的作用了,接下来深入一点来看看在执行了import的命令后会发生什么。

  • 首先 sqoop连接到数据库 获取表的元数据:表有多少列,列名是什么及其数据类型.如 对应 cities 表而言
    sqoop将会获取的信息是 : 3列 id country city 类型分别是 int , varchar , varchar ,对于特定
    的数据库系统和表本身的信息,其他有用的元数据信息同样可以获取到。在这个阶段,sqoop并没有在数据库和
    hadoop间有数据的传输;但是会有对目录表和视图的查询,基于获取的元数据信息。sqoop将会生成java类
    并通过JDK和Hadoop中的有效库进行编译。

  • 其次 sqoop连接到Hadoop集群并且提交一个MapReduce作业,在作业中的每个mapper将会传输表中的部分数据
    由于MapReduce在同一时间可以执行多个mapper操作,sqoop将会利用数据库系统潜在性能,以并行的方式传输数据
    已达到更好的性能。对于每个mapper中直接在数据库表和hadoop集群间传输数据。为了避免数据传输中瓶颈,处于
    中间位置的sqoop扮演着监控者角色,而不是数据传输的参与者,这也是Sqoop设计的一个重要原则。
    更多信息https://blue-shadow.top/

相关文章

  • 2.1sqoop从整张表中导入数据

    Apache Sqoop Cookbook 英文版-翻译学习!! Sqoop 主要的命令 在接下来的几节中,致力于...

  • Mysql通过sql导入表数据

    sq将一张表的数据导入到另外一张表数据需要考虑几种情况 1. 将一张表的全部数据导入到新表: create tab...

  • Hive之DML数据操作

    目录1.1 数据导入1.2 数据导出1.3 清除表中数据(Truncate) 1.1 数据导入 1.1.1 向表中...

  • hive sql dml

    导入数据 唯一的导入数据库的方法 还可以从已经存在的表中向新创建的表中导入数据 导出数据 如果存储的数据格式正好为...

  • MySQL表导入hive表(一次性导入,增量导入)

    前言 如何实现将数据从MySQL表中导入hive表中,我在这里使用sqoop实现了数据导入,以下是完整的脚本实例,...

  • Hive导入数据

    向管理表中导入数据 从其他表导入数据 如果staged_employees表有多个state需要插入到employ...

  • sqoop数据导入导出应用案例

    sqoop数据导入导出应用案例 1 sqoop导入数据 将RDBMS中的一个表数据导入到hdfs。表中的每一行被视...

  • 如何利用Excel将数据批量导入系统

    公司的某一条线路上,需要通过Excel将大约4000多条数据导入到系统中,而且导入的数据不是一张表,与其他表也有连...

  • csv 导入到MySQL

    LOAD DATA INFILE语句允许您从文本文件读取数据,并将文件的数据快速导入数据库的表中。 创建将要导入文...

  • Oracle 数据迁移

    使用dump文件 导出 导入 创建表空间 创建用户 数据导入 创建表空间 创建用户 数据导入 过程中遇到的问题 问...

网友评论

      本文标题:2.1sqoop从整张表中导入数据

      本文链接:https://www.haomeiwen.com/subject/romitctx.html