[sqoop]sqoop使用

SunnyYoona SunnyYoona     2022-08-13     524

关键词:

Sqoop的本质还是一个命令行工具,和HDFS,MapReduce相比,并没有什么高深的理论。

我们可以通过sqoop help命令来查看sqoop的命令选项,如下:

 
  1. 16/11/13 20:10:17 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
  2. usage: sqoop COMMAND [ARGS]
  3. Available commands:
  4.  codegen            Generate code to interact with database records
  5.  create-hive-table  Import a table definition into Hive
  6.  eval               Evaluate a SQL statement and display the results
  7.  export             Export an HDFS directory to a database table
  8.  help               List available commands
  9.  import             Import a table from a database to HDFS
  10.  import-all-tables  Import tables from a database to HDFS
  11.  import-mainframe   Import datasets from a mainframe server to HDFS
  12.  job                Work with saved jobs
  13.  list-databases     List available databases on a server
  14.  list-tables        List available tables in a database
  15.  merge              Merge results of incremental imports
  16.  metastore          Run a standalone Sqoop metastore
  17.  version            Display version information
  18. See 'sqoop help COMMAND' for information on a specific command.

其中使用频率最高的选项还是import 和 export 选项。

1. codegen

将关系型数据库表的记录映射为一个Java文件,Java class类以及相关的jar包,该命令将数据库表的记录映射为一个Java文件,在该Java文件中对应有表的各个字段。生成的jar和class文件在Metastore功能使用时会用到。该命令选项的参数如下图所示:


举例:

 
  1. sqoop codegen --connect jdbc:mysql://localhost:3306/test --table order_info -outdir /home/xiaosi/test/ --username root -password root

上面实例以test数据库的order_info表来生成Java代码,其中-outdir指定了Java代码生成的路径

运行结果信息如下:

 
  1. 16/11/13 21:50:34 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
  2. Enter password:
  3. 16/11/13 21:50:38 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
  4. 16/11/13 21:50:38 INFO tool.CodeGenTool: Beginning code generation
  5. 16/11/13 21:50:38 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `order_info` AS t LIMIT 1
  6. 16/11/13 21:50:38 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `order_info` AS t LIMIT 1
  7. 16/11/13 21:50:38 INFO orm.CompilationManager: HADOOP_MAPRED_HOME is /opt/hadoop-2.7.2
  8. 注: /tmp/sqoop-xiaosi/compile/ea41fe40e1f12f6b052ad9fe4a5d9710/order_info.java使用或覆盖了已过时的 API
  9. 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
  10. 16/11/13 21:50:39 INFO orm.CompilationManager: Writing jar file: /tmp/sqoop-xiaosi/compile/ea41fe40e1f12f6b052ad9fe4a5d9710/order_info.jar

我们还可以使用-bindir指定编译成的class文件以及将生成文件打包为jar的jar包文件输出路径:

 
  1. 16/11/13 21:53:55 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
  2. Enter password:
  3. 16/11/13 21:53:58 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
  4. 16/11/13 21:53:58 INFO tool.CodeGenTool: Beginning code generation
  5. 16/11/13 21:53:58 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `order_info` AS t LIMIT 1
  6. 16/11/13 21:53:58 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `order_info` AS t LIMIT 1
  7. 16/11/13 21:53:58 INFO orm.CompilationManager: HADOOP_MAPRED_HOME is /opt/hadoop-2.7.2
  8. 注: /home/xiaosi/data/order_info.java使用或覆盖了已过时的 API
  9. 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
  10. 16/11/13 21:53:59 INFO orm.CompilationManager: Writing jar file: /home/xiaosi/data/order_info.jar

上面实例指定编译成的class文件(order_info.class)以及将生成文件打包为jar的jar包文件(order_info.jar)输出路径为/home/xiaosi/data路径,java文件(order_info.java)路径为/home/xiaosi/test

2. create-hive-table

这个命令上一篇文章[Sqoop导入与导出]中已经使用过了,作用就是生成与关系数据库表的表结构对应的Hive表。该命令选项的参数如下图所示:

举例:

 
  1. sqoop create-hive-table --connect jdbc:mysql://localhost:3306/test --table employee --username root -password root --fields-terminated-by ','

3. eval

eval命令选项可以让Sqoop使用SQL语句对关系性数据库进行操作,在使用import这种工具进行数据导入的时候,可以预先了解相关的SQL语句是否正确,并能将结果显示在控制台。

3.1 选择查询评估计算

使用eval工具,我们可以评估计算任何类型的SQL查询。我们以test数据库的order_info表为例子:

 
  1. sqoop eval --connect jdbc:mysql://localhost:3306/test --username root --query "select * from order_info limit 3" -P

运行结果信息:

 
  1. 16/11/13 22:25:19 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
  2. Enter password:
  3. 16/11/13 22:25:22 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
  4. ------------------------------------------------------------
  5. | id                   | order_time           | business   |
  6. ------------------------------------------------------------
  7. | 358574046793404      | 2016sqoop使用入门(代码片段)

    ...为sqoop1,1.99x的为sqoop2,前者因为安装简单,得到了大量使用,后者虽然引进了安全机制、webui,restapi等更加方便使用的特性,但是安装过程繁琐暂时不记录。以下是sqoop1的结构图,它只提供一个sqoop客户端,使用命令行方式来... 查看详情

    sqoop新品来了

    ...在的一些缺陷给实际操作带来了不便。Sqoop2便成为了研究使用的对象,那么Sqoop2有什么优势呢?首先我们先来了解一下Sqoop的使用情况,使用Sqoop数据不会出现丢失,而且Sqoop功能强大,可以将数据导到HDFS,Hbase,Hive等各种连接... 查看详情

    sqoop导入数据到mysql原理_sqoop的详细使用及原理

    1、sqoop简介sqoop是一个用来将hadoop中hdfs和关系型数据库中的数据相互迁移的工具,可以将一个关系型数据库(mysql、oracle等)中的数据导入到hadoop的hdfs中,也可以将hdfs的数据导入到关系型数据库中。2、sqoop的特点:sqoop的底层实现... 查看详情

    如何使用 sqoop 工具执行增量加载

    】如何使用sqoop工具执行增量加载【英文标题】:Howtoperformincrementalloadusingsqooptool【发布时间】:2017-11-0214:52:51【问题描述】:实际上,我的数据在Teradata表中。我已经使用sqoop-import命令将该teradata表数据sqoop到Hive中。但是,我的t... 查看详情

    使用 sqoop 导入数据,表名带有 $

    】使用sqoop导入数据,表名带有$【英文标题】:Importdatausingsqoopwith$onthetablename【发布时间】:2016-03-0704:54:00【问题描述】:我在使用sqoop从Oracle数据库导入数据到hive时遇到错误:Sqoop命令如下:sqoopimport\\--connectjdbc:oracle:thin:@connec... 查看详情

    sqoop快速上手(代码片段)

    ...系型数据库的关系3、Sqoop简介二、Sqoop下载三、Sqoop基础使用3.1前置软件3.2Sqoop安装3.3Sqoop基础使用1、查看Sqoop的帮助信息2、单独连接数据库3、导入数据4、导出数据四、详细参数补充**1常用命令列举****2命令&参数详解****2. 查看详情

    sqoop--安装配置

    ....apache.org2.配置jdk环境变量和Hadoop的环境变量。因为sqoop在使用是会去找环境变量对应的路径,从而完整工作。3.sqoop解压即可使用(前提是环境变量都配好了)4.需要将要连接的数据库的驱动包加入sqoop的lib目录下(本例中用的是 查看详情

    sqoop安装及使用

    简介:  sqoop是一款用于hadoop和关系型数据库之间数据导入导出的工具。你可以通过sqoop把数据从数据库(比如mysql,oracle)导入到hdfs中;也可以把数据从hdfs中导出到关系型数据库中。通过将sqoop的操作命令转化为Hadoop的MapReduce... 查看详情

    sqoop使用(代码片段)

    下载解压wgethttps://mirrors.tuna.tsinghua.edu.cn/apache/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gztar-xzvfsqoop-1.4.7.bin__hadoop-2.6.0.tar.gz-C/opt/ 查看详情

    sqoop安装与使用

    使用sqoop进行将Hive词频统计的结果数据传输到Mysql中。1.mysql准备接受数据的数据库与表  2. hive准备待传输的数据   3.sqoop进行数据传输  4.mysql查看传输结果  查看详情

    Sqoop 如何使用 SSL 加密访问 MySQL

    】Sqoop如何使用SSL加密访问MySQL【英文标题】:HowcouldSqoopuseSSLencryptiontoaccessMySQL【发布时间】:2021-10-2213:33:17【问题描述】:目前我们需要使用Sqoop建立基于SSL的连接,以将数据从MySQL提取到HDFS。根据AWS和Sqoop的相关文档,我们完... 查看详情

    hadoop 3.3.0 应该使用哪个版本的 sqoop?

    】hadoop3.3.0应该使用哪个版本的sqoop?【英文标题】:WhichversionofsqoopshouldIuseforhadoop3.3.0?【发布时间】:2020-09-0609:21:19【问题描述】:我正在尝试在hadoop3.3.0上的windows10中安装sqoop1.4.7,在GITbash上使用./configure-sqoop我得到以下o/p:警... 查看详情

    使用 Hive 查询 Sqoop 到 MySQL

    】使用Hive查询Sqoop到MySQL【英文标题】:SqooptoMySQLusingHiveQuery【发布时间】:2012-08-2011:27:02【问题描述】:我想将Hive表中的数据sqoop到MySQL表中。两者都有相同的列集,但它们的顺序不同。有没有办法使用具有属于mysql表的列顺序... 查看详情

    SQOOP -- 在 SQL Server 中使用 SCHEMA 查询

    】SQOOP--在SQLServer中使用SCHEMA查询【英文标题】:SQOOP--querywithSCHEMAinSQLServer【发布时间】:2017-04-2103:36:44【问题描述】:我正在尝试使用sqoop中的--query选项从SQLServer导入数据。我关心的是,我们如何在SQLServer中声明与--query一起使... 查看详情

    Sqoop - 使用 Oozie 导入 Hive 失败

    】Sqoop-使用Oozie导入Hive失败【英文标题】:Sqoop-HiveimportusingOoziefailed【发布时间】:2015-01-2911:36:16【问题描述】:我正在尝试执行从oracle到hive的sqoop导入,但作业失败并出现错误WARN[main]conf.HiveConf(HiveConf.java:initialize(2472))-HiveConfofn... 查看详情

    sqoop安装及使用(代码片段)

    SQOOP安装及使用文章目录SQOOP安装及使用SQOOP安装1、上传并解压2、修改文件夹名字3、修改配置文件4、修改环境变量5、添加MySQL连接驱动6、测试准备MySQL数据登录MySQL数据库创建student数据库切换数据库并导入数据另外一种导入数... 查看详情

    在 sqoop 命令中使用 teradata 快速导出

    】在sqoop命令中使用teradata快速导出【英文标题】:Usingteradatafastexportwithinsqoopcommand【发布时间】:2020-05-0200:47:37【问题描述】:在使用Teradata方法“--fast-export”时从Teradata数据库进行sqooping时遇到问题,下面是sqoop查询示例-Dhadoop.... 查看详情

    使用 Sqoop 导入获取标头数据

    】使用Sqoop导入获取标头数据【英文标题】:GettingheaderdatawithSqoopimport【发布时间】:2015-12-2805:02:02【问题描述】:我正在将Teradata表导入HDFS,然后上游将读取该表(在我的情况下为Datameer)。Datameer在读取Sqoop生成的部分文件之... 查看详情