Sqoop的安装与使用(附命令参数,比如导入导出)

Sqoop导入导出模板(点击了解更多)Sqoop 导入导出操作,从 mysq 导入数据到 hive,从 hive 导出数据到 mysqlhttps://blog.csdn.net/qq_17685725/article/details/122904237


1、sqoop简介

        Apache Sqoop 是在 Hadoop 生态体系和 RDBMS 体系之间传送数据的一种工具。Sqoop 工作机制是将导入或导出命令翻译成 mapreduce 程序来实现。在翻译出的 mapreduce 中主要是 inputformat 和 outputformat 进行定制。

  • Hadoop 生态系统包括:HDFS、Hive、Hbase 等
  • RDBMS 体系包括:Mysql、Oracle、DB2 等
  • Sqoop 可以理解为:“SQL 到 Hadoop 和 Hadoop 到 SQL”

站在 Apache 立场看待数据流转问题,可以分为数据的导入导出:

  • import:数据导入(RDBMS 到 Hadoop)
  • export:数据导出(Hadoop 到 RDBMS)

2、Sqoop安装

注:安装 sqoop 的前提是已经具备 java 和 hadoop 的环境:

2.1 下载sqoop安装包:

http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.6-cdh5.14.0.tar.gz

2.2 将安装包上传到 linux 中, 并解压(建议放置在 hive 和 hadoop 同服务器的路径下):

tar -zxvf /export/software/sqoop-1.4.6-cdh5.14.0.tar.gz -C /export/server/
  • 2.2.1 创建软连接
    ln -s /export/server/sqoop-1.4.6-cdh5.14.0/ /export/server/sqoop
  • 2.2.2 配置环境变量
    vim /etc/profile
    # 添加以下内容:
    export SQOOP_HOME=/export/server/sqoop

2.3 修改配置文件 :

cd $SQOOP_HOME/conf
mv sqoop-env-template.sh sqoop-env.sh
vi sqoop-env.sh

# 修改一下三个位置:
export HADOOP_COMMON_HOME= /export/server/hadoop-2.7.5
export HADOOP_MAPRED_HOME= /export/server/hadoop-2.7.5
export HIVE_HOME= /export/server/hive

2.4 加入 mysql 的 jdbc 的驱动包:

cp /hive/lib/mysql-connector-java-5.1.32.jar $SQOOP_HOME/lib/

2.5 验证启动 :

bin/sqoop list-databases \
--connect jdbc:mysql://localhost:3306/ \
--username root --password 123456
# 本命令会列出所有mysql的数据库。如果可以显示, 整个Sqoop安装工作完成。

3、Sqoop命令参数

Sqoop 的数据同步支持2种业务场景,在 Linux 中输入 sqoop help 命令可以查看到。

  • 导入: 从 RDBMS 到 HDFS/Hive,命令是 sqoop import 开头
  • 导出: 从 HDFS/Hive 到 RDBMS,命令是 sqoop export 开头

注:再在 Linux 中输入 sqoop import –help 或 sqoop export –help 可以查看到具体的用法。

3.1 公用参数:数据库连接

参数

说明

--connect

连接关系型数据库的URL

--help

打印帮助信息

--driver

JDBC的driver class

--password

连接数据库的密码

--username

连接数据库的用户名

--verbose

在控制台打印出详细信息

3.2 公用参数:import 导入

参数

说明

--enclosed-by <char>

给字段值前加上指定的字符

--escaped-by <char>

对字段中的双引号加转义符

--fields-terminated-by <char>

设定每个字段是以什么符号作为结束,默认为逗号

--lines-terminated-by <char>

设定每行记录之间的分隔符,默认是\n

--mysql-delimiters

Mysql默认的分隔符设置,字段之间以逗号分隔,行之间以\n分隔,默认转义符是\,字段值以单引号包裹。

--optionally-enclosed-by <char>

给带有双引号或单引号的字段值前后加上指定字符。

-m

指定并行处理的MapReduce任务数量。 -m不为1时,需要用split-by指定分片字段进行并行导入,尽量指定int型。

--split-by id

如果指定-split by, 必须使用$CONDITIONS关键字, 双引号的查询语句还要加\

--query或--e <statement>

将查询结果的数据导入,使用时必须伴随参--target-dir,--hcatalog-table,如果查询中有where条件,则条件后必须加上CONDITIONS关键字。 如果使用双引号包含sql,则CONDITIONS前要加上\以完成转义:\$CONDITIONS

3.3 公用参数:export 导出

参数

说明

--input-enclosed-by <char>

对字段值前后加上指定字符

--input-escaped-by <char>

对含有转移符的字段做转义处理

--input-fields-terminated-by <char>

字段之间的分隔符

--input-lines-terminated-by <char>

行之间的分隔符

--input-optionally-enclosed-by <char>

给带有双引号或单引号的字段前后加上指定字符

3.4 公用参数:hive

参数

说明

--hive-delims-replacement <arg>

用自定义的字符串替换掉数据中的\r\n和\013 \010等字符

--hive-drop-import-delims

在导入数据到hive时,去掉数据中的\r\n\013\010这样的字符

--map-column-hive <arg>

生成hive表时,可以更改生成字段的数据类型

--hive-partition-key

创建分区,后面直接跟分区名,分区字段的默认类型为string

--hive-partition-value <v>

导入数据时,指定某个分区的值

--hive-home <dir>

hive的安装目录,可以通过该参数覆盖之前默认配置的目录

--hive-import

将数据从关系数据库中导入到hive表中

--hive-overwrite

覆盖掉在hive表中已经存在的数据

--create-hive-table

默认是false,即,如果目标表已经存在了,那么创建任务失败。

--hive-table

后面接要创建的hive表,默认使用MySQL的表名

--table

指定关系数据库的表名

猜你喜欢

转载自blog.csdn.net/qq_17685725/article/details/123151889