专栏首页星汉技术Sqoop简介以及安装

Sqoop简介以及安装

Sqoop简介以及安装

近期用到Sqoop进行数据导出导入,发现网上很多的博客都不够精细,所以本人就针对Sqoop1.4.7的官方文档进行了学习,以下是学习笔记。

一、介绍

    sqoop是沟通HDFS和关系型数据库的桥梁,可以从HDFS导出数据到关系型数据库,也可以从关系型数据库导入数据到HDFS。当然也支持Hive、HBase跟关系型数据库之间的互相导出导入。这是一个可以进行双向转化数据的工具。

二、安装

1、下载

    Sqoop是Apache提供的工具,下载的时候一定要先确定hadoop的版本,要找和hadoop匹配的版本,如果不匹配将会发生不可预知的问题。Sqoop目前支持4种主要的Hadoop版本  0.20、0.23、1.0和2.0。

2、安装

    官方要求必须有jdk和hadoop的支持,并且有版本要求。

1.安装JDK和Hadoop

    本人使用的jdk为1.8.131版本,Hadoop为2.7.1版本。这里jdk和Hadoop的安装请参阅:Hadoop伪分布式模式搭建Hadoop完全分布式集群搭建Centos 7+CDH5.7.2全部署流程,三者皆可。

2.安装Sqoop

    将Sqoop的安装包上传到linux中,进行解压就可以直接使用。以下是本人使用的Sqoop的版本:

    sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

    sqoop可以通过已配置的环境变量JAVA_HOME找到JDK,可以通过已配置的环境变量HADOOP_HOME找到Hadoop,所以Sqoop不需要做任何配置就可以直接工作。

    当然如果想在任何目录使用Sqoop的命令的话,就必须配置Sqoop的环境变量。如下是本人配置的Sqoop的环境变量:

export SQOOP_HOME=/home/software/sqoop1.4.7
export PATH=$PATH:$SQOOP_HOME/bin

3.MySQL jar包

    这里本人使用的是MySQL数据库,因为Sqoop需要连接数据库,所以需要将连接数据库的驱动jar包加入sqoop的lib目录下。以下是本人使用的jar包:

    mysql-connector-java-5.1.38-bin.jar

当然,如果你使用的是其他关系型数据库,相应的就需要导入其他关系型数据库的jar包。

三、基础语法

1、命令格式

如下是基础的命令格式:

$ sqoop tool-name [tool-arguments]

    这个命令的意思是以sqoop命令开头,然后跟上要使用的工具名称(工具模块在下文有介绍),然后跟上要使用的工具相应的参数选项。

2、帮助工具

    Sqoop提供了相应的帮助工具,以下是Sqoop帮助命令展示:

$ sqoop help
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
  import-mainframe   Import mainframe datasets to HDFS
  list-databases     List available databases on a server
  list-tables        List available tables in a database
  version            Display version information
See 'sqoop help COMMAND' for information on a specific command.

    可以通过输入以下内容来显示特定工具的帮助:

sqoop help (tool-name)

    例如:

sqoop help import

    也可以将--help参数添加到任何命令中:

sqoop import --help

    这两种方式,效果是一样的。

3、命令别名

    除了使用sqoop (toolname)语法之外,还可以使用指定sqoop-(toolname)语法的别名脚本。

    例如:Sqoop内置的脚本sqoop-import、sqoop-export等。

4、Generic and Specific Arguments

    generic:泛型。specific arguments:特定参数。

    要控制每个Sqoop工具的操作,就要使用泛型和特定参数。

    例如:

    导入数据的用法:

$ sqoop help import
usage: sqoop import [GENERIC-ARGS] [TOOL-ARGS]

Common arguments:
   --connect <jdbc-uri>     Specify JDBC connect string
   --connect-manager <class-name>     Specify connection manager class to use
   --driver <class-name>    Manually specify JDBC driver class to use
   --hadoop-mapred-home <dir>      Override $HADOOP_MAPRED_HOME
   --help                   Print usage instructions
   --password-file          Set path for file containing authentication password
   -P                       Read password from console
   --password <password>    Set authentication password
   --username <username>    Set authentication username
   --verbose                Print more information while working
   --hadoop-home <dir>     Deprecated. Override $HADOOP_HOME

    通用Hadoop命令行参数:(必须在任何特定于工具的参数之前)

支持的通用选项是
-conf <配置文件>指定一个应用程序配置文件
-D <property = value>给定属性的使用值
-fs <local | namenode:port>指定一个namenode
-jt <local | jobtracker:port>指定作业跟踪器
-files <逗号分隔的文件列表>指定要复制到地图缩小集群的逗号分隔文件
-libjars <逗号分隔的jar列表>指定要包含在classpath中的逗号分隔的jar文件。
-archives <逗号分隔的存档列表>指定要在计算机上解除存档的逗号分隔档案。

    一般的命令行语法是:

bin/hadoop command [genericOptions] [commandOptions]

    必须提供通用的参数-conf,-D工具名称后,依此类推,但之前的任何特定工具的参数(如--connect)。

    注意:Hadoop参数前面是单个破折号字符(-),而特定于工具的参数则以两个破折号(--)开头,单个字符参数则是单个破折号,如-P。

    -conf、-D、-fs和-jt参数控制配置Hadoop的服务器设置。

    例如:-D mapred.job.name=<job_name>可用于设置Sqoop启动的MR作业的名称,如果未指定,名称将默认为作业的jar名称 - 该名称是从所使用的表名派生的。

    这些-files、-libjars和-archives参数通常不用于Sqoop,但在Hadoop的内部包含这些参数解析系统。

5、options file(选项文件)

1.定义

    官方释义:

    使用scoop的时候,命令行选项可以放置到选项文件中。一个选项文件是一个文本文件,每一行标识一个选项,顺序是选项出现在命令行的顺序。

    个人理解:

    其实就是将经常重复使用的命令选项或者经常替换参数的命令选项写到一个文件中,这样既可重用,也实现了解耦。

2.选项文件书写规则

    要指定选项文件,只需创建一个选项文件。

    1.选项文件允许一个选项存在于多行中,通过在中间行末尾使用反斜杠标识语句选项结束。

    2.选项文件支持注解,在选项文件中以#字符开头即可。注释需要新起一行使用,不能和选项文本混写。

    3.选项文件中所有注释和空行都会被忽略。

    4.选项文件中开头和结尾的空格被忽略。

    5.选项文件中用“”标识的字符串中出现的空格是有效的,不会被忽略。引用的字符串不能超过行的范围。

3.选项文件的使用规则

    1.可以在命令行中的任何位置指定选项文件,其中的选项遵循选项排序规则。

    选项排序规则:

    通用选项首先出现,接下来是工具特定的选项,最后是打算传递给子程序的选项。

    2.通过--options-file参数将选项文件传递到命令行。

    3.可以在一个命令行中指定多个选项文件。调用选项文件需要写出选项文件的全路径。

    例如:

    用于导入的Sqoop命令:

$ sqoop import --connect jdbc:mysql://localhost/db --username foo --table TEST

    使用选项文件命令如下:

$ sqoop --options-file /users/homer/work/import.txt --table TEST

    选项文件/users/homer/work/import.txt包含以下内容:

import
--connect
jdbc:mysql://localhost/db
--username
foo

    为了便于阅读,选项文件可以有空行和注释。因此,上述选项文件可以有如下的形式:

#
#Sqoop导入的选项文件
#
#指定被调用的工具
import
#连接参数和值:多行执行一个选项
--connect
jdbc:mysql://localhost/db
#用户名参数和值
--username
foo
#
#应该在命令行中指定剩余选项。
#

四、工具模块

    Sqoop是相关工具的集合。要使用Sqoop,可以指定要使用的工具以及控制该工具的参数。包含以下工具:

    帮助工具

    sqoop help工具:帮助工具。(上面已经做了介绍)

    导入工具

    sqoop-import:单表导入。

    sqoop-import-all-tables:多表导入。

    sqoop-import-mainframe:PDS导入。

    导出工具

    sqoop-export:数据导出。

    其他工具

    validation:对数据进行计算,符合条件的数据进行导入或导出

    sqoop-job:创建和处理保存的作业。

    sqoop-metastore:配置Sqoop为元数据共享库。

    sqoop-merge:合并数据集。

    sqoop-codegen:生成封装和解释导入记录的Java类

    sqoop-create-hive-table:基于先前导入数据,填充Hive matestore表。

    sqoop-list-databases:列出可用的数据库模式。

    sqoop-list-tables:列出模式内的表。

    sqoop-eval:基本的SQL执行shell。

    sqoop-version:显示Sqoop版本信息。

    以后会陆续进行这些工具的具体介绍。

下一篇:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Sqoop工具模块之sqoop-import 原

        import工具从RDBMS向HDFS导入单独的表。表格中的每一行都表示为HDFS中的单独记录。记录可以存储为文本文件(每行一个记录),或以Avro或S...

    云飞扬
  • Java中的坑之方括号 原

    这一段时间,在做项目的时候,发现了一个坑,这个坑说大不大,说小不小,不知道的足够喝一壶,知道的就可以轻松解决。

    云飞扬
  • 线性表(Linear List) 原

    线性表是我们日常工作中最简单也是最常用的一种数据结构。 它有如下特点: 每个数据元素最多只能有一个直接前趋。 每个数据元素最多只能有一个直接后继。 只有...

    云飞扬
  • 用VS Code进行文件比较compare

      下午前端小美眉问怎么比较两个文件不同的地方,其实vs code就有文件比较功能,对调试效果非常方便,下面一起随ytkah来看看如何操作吧,假设有grid.j...

    ytkah
  • 微软确认Win10蓝屏0x00000133问题,承诺尽快修复

    IT之家讯 很多从Win7/Win8.1升级到Win10的用户都遇到了不同的蓝屏问题,最近微软对于其中之一的“DPC_WATCHDOG_VIOLATION”进行...

    逸鹏
  • 如何学python

    第十六课 基础文件操作 今天我们来说说文件操作。文件操作在程序编写里有着举足轻重的作用。文件操作,主要包含文件的输入和输出。学会了文件操作,就可以写出更符合实际...

    用户1631416
  • 一日一技:超级简单搭建更加稳定安全的文件分享服务器

    在公众号以前的文章里面,我们提到,如果想简单的分享一下文件,我们可以使用一行 Python 命令:

    青南
  • Kafka快速入门系列(5) | Kafka的工作流程及文件存储机制

      Kafka中消息是以topic进行分类的,生产者生产消息,消费者消费消息,都是面向topic的。   topic是逻辑上的概念,而partition是...

    不温卜火
  • python教程(八)·文件操作

    由于离高考越来越近,博主打算本篇文章过后,暂停本系列教程的更新,等到高考完后再继续本系列教程,请谅解!

    py3study
  • 4.1.6 文件系统基础

    文件是以计算机硬盘为载体存储在计算机上的信息集合,它的形式很多样化,可以是文本文档、图片、程序等。

    week

扫码关注云+社区

领取腾讯云代金券