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

本文详细介绍了Apache Sqoop的安装过程及使用,包括从MySQL导入数据到Hive,以及从Hive导出数据到MySQL的操作。Sqoop是Hadoop生态和RDBMS之间数据传输的工具,通过mapreduce实现数据的导入导出。文章还列举了不同类型的Sqoop命令参数,如数据库连接、导入和导出的参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sqoop导入导出模板(点击了解更多)Sqoop 导入导出操作,从 mysq 导入数据到 hive,从 hive 导出数据到 mysqlhttps://blog.youkuaiyun.com/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

指定关系数据库的表名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

竹长大大

客官,赏个银子吧,别下次一定了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值