sqoop2 使用实例

启动Client

/usr/hadoop/sqoop-1.99.5-cdh5.5.1-bin-hadoop200/bin/sqoop.sh client

 

为客户端配置服务器:set server --host node3--port 12000 --webapp sqoop 【红色部分为 本机hostname 主机名和端口号】

sqoop:000> set server --host node3--port 12000 --webapp sqoop

 

使用 show version --all 查看服务器配置

sqoop:000> show version --all

 

1、 使用 show connector  查看sqoop的所有连接,sqoop1.99.5 所有的连接固定为四个,如下:

sqoop:000> show connector 
+----+------------------------+-----------------+------------------------------------------------------+----------------------+
| Id |          Name          |     Version     |                        Class                         | Supported Directions |
+----+------------------------+-----------------+------------------------------------------------------+----------------------+
| 1  | kite-connector         | 1.99.5-cdh5.5.1 | org.apache.sqoop.connector.kite.KiteConnector        | FROM/TO              |
| 2  | kafka-connector        | 1.99.5-cdh5.5.1 | org.apache.sqoop.connector.kafka.KafkaConnector      | TO                   |
| 3  | hdfs-connector         | 1.99.5-cdh5.5.1 | org.apache.sqoop.connector.hdfs.HdfsConnector        | FROM/TO              |
| 4  | generic-jdbc-connector | 1.99.5-cdh5.5.1 | org.apache.sqoop.connector.jdbc.GenericJdbcConnector | FROM/TO              |
+----+------------------------+-----------------+------------------------------------------------------+----------------------+

 2、 在向hdfs导入导出数据时,需要依赖以上四个连接创建link (在1.99.4版本之后 用户不需要再创建连接)

首先 查看 当前的所有link

sqoop:000> show link
+----+---------------------+--------------+------------------------+---------+
| Id |        Name         | Connector Id |     Connector Name     | Enabled |
+----+---------------------+--------------+------------------------+---------+
| 1  | hdfs_link           | 3            | hdfs-connector         | true    |
| 2  | mysql_openfire_link | 4            | generic-jdbc-connector | true    |
+----+---------------------+--------------+------------------------+---------+

 查看job

sqoop:000> show job
+----+-------------------------+----------------+--------------+---------+
| Id |          Name           | From Connector | To Connector | Enabled |
+----+-------------------------+----------------+--------------+---------+
| 1  | openfire_properties_job | 4              | 3            | true    |
+----+-------------------------+----------------+--------------+---------+

 

3、 创建 link

   创建hdfs连接

sqoop:000> create link --cid 3
Creating link for connector with id 1
Please fill following values to create new link object
Name: hdfs_link --设置连接名称
Link configuration
HDFS URI: hdfs://ns1/ --HDFS访问地址
New link was successfully created with validation status OK and persistent id 2

 创建 mysql 连接

sqoop:000> create link --cid 4
Creating link for connector with id 2
Please fill following values to create new link object
Name: mysql_openfire_link --设置连接名称
Link configuration
JDBC Driver Class: com.mysql.jdbc.Driver --驱动
JDBC Connection String: jdbc:mysql://mysql.server/database --JDBC连接
Username: sqoop --数据库用户
Password: ***** --数据库密码
JDBC Connection Properties:
There are currently 0 values in the map:
entry#protocol=tcp --之后按回车
New link was successfully created with validation status OK and persistent id 1

 

5、 创建job

sqoop:000> create job -f 2 -t 1
Creating job for links with from id 1 and to id 6
Please fill following values to create new job object
Name: mysql_openfire--设置 任务名称
FromJob configuration
Schema name:(Required)sqoop --库名:必填
Table name:(Required)sqoop --表名:必填
Table SQL statement:(Optional) --选填
Table column names:(Optional) --选填
Partition column name:(Optional) id --选填
Null value allowed for the partition column:(Optional) --选填
Boundary query:(Optional) --选填
ToJob configuration
Output format:
0 : TEXT_FILE
1 : SEQUENCE_FILE
Output format:
0 : TEXT_FILE
1 : SEQUENCE_FILE
Choose: 0 --选择文件压缩格式
Compression format:
0 : NONE
1 : DEFAULT
2 : DEFLATE
3 : GZIP
4 : BZIP2
5 : LZO
6 : LZ4
7 : SNAPPY
8 : CUSTOM
Choose: 0 --选择压缩类型
Custom compression format:(Optional) --选填
Output directory:hdfs:/ns1/sqoop --HDFS存储目录(目的地)
Driver Config
Extractors: 2 --提取器
Loaders: 2 --加载器
New job was successfully created with validation status OK and persistent id 1

 

查看job

sqoop:000> show job
+----+-------------------------+----------------+--------------+---------+
| Id |          Name           | From Connector | To Connector | Enabled |
+----+-------------------------+----------------+--------------+---------+
| 1  | openfire_properties_job | 4              | 3            | true    |
+----+-------------------------+----------------+--------------+---------+

 

 

 常用命令列表

sqoop:001> show link 显示所有链接

sqoop:001> carete link --cid 1床架连接

sqoop:000> delete link --lid 1 删除link
sqoop:001> show job 显示所有job

sqoop:001> create job --f 2 --t 1 创建job ( 从link 2 向link 1导入数据)
sqoop:000> start job --jid 1 启动job
sqoop:000> status job --jid 1 查看导入状态

sqoop:000> delete job --jid 1 删除job

 

 

 

 

 

 

 

 

 

 

 

<think>好的,我现在要介绍Sqoop使用。首先,我得确认用户对Sqoop的了解程度。可能用户是刚开始接触大数据工具,所以需要从基础讲起。Sqoop主要用于Hadoop和关系数据库之间的数据传输,这点很重要,应该先说明它的作用和适用场景。 接下来,我需要分步骤介绍如何使用Sqoop。首先安装和配置,这部分需要提到环境变量的设置,比如SQOOP_HOME,以及如何验证安装是否成功。然后,列出常用命令,比如import和export,用户可能需要具体例子来理解参数的使用。例如,导入数据到HDFS时,需要指定连接字符串、用户名、密码、表名等,这些参数要详细说明。 另外,要注意Sqoop的不同版本之间的差异,尤其是1和2,用户可能会混淆两者的使用方式。需要提醒用户检查版本,并说明Sqoop1和Sqoop2的主要区别,比如架构和命令的变化。 数据类型映射也是一个关键点,特别是数据库中的字段类型如何对应到Hadoop的数据类型,这里可能需要举一些例子,比如INT对应Integer,VARCHAR对应String等。同时,要提到特殊类型处理,例如BLOB或CLOB,可能需要使用--map-column-java参数来手动映射。 增量导入在实际应用中很常见,用户可能需要知道如何根据时间戳或递增列来更新数据。这里需要给出具体的命令示例,并解释每个参数的作用,比如--check-column、--incremental等。 数据导出部分同样重要,用户可能会有将处理后的数据导回数据库的需求。要说明导出命令的基本结构,并强调目标表必须存在,字段需要匹配。此外,导出时的分隔符问题需要注意,是否与导入时一致,避免数据格式错误。 最后,安全问题不容忽视,特别是生产环境中密码的传递方式。提醒用户不要使用-p参数直接在命令行输入密码,而是建议使用-P参数从文件读取,或者配置安全的存储方式。 整个过程中,需要确保语言简洁明了,结构清晰,分点列出步骤和注意事项。同时,要检查是否有遗漏的重要功能或常见问题,比如并行导入、容错处理等,可能需要简要提及或建议进一步学习的资源。确保所有命令示例符合Sqoop的语法规范,避免拼写错误,并且参数使用正确。这样用户能够按照步骤顺利使用Sqoop进行数据迁移,同时避免常见陷阱。</think>Sqoop(SQL-to-Hadoop)是Apache开源工具,专门用于在Hadoop生态系统(如HDFS、Hive、HBase)与关系型数据库(如MySQL、Oracle)之间高效传输批量数据。以下是分步骤的使用说明: --- ### **一、安装与配置** 1. **下载**:从[Apache官网](https://sqoop.apache.org/)下载对应版本(注意Hadoop版本兼容性) 2. **环境变量**:配置`SQOOP_HOME`并添加`$SQOOP_HOME/bin`到`PATH` 3. **驱动依赖**:将数据库JDBC驱动(如`mysql-connector-java.jar`)放入`$SQOOP_HOME/lib/` 验证安装: ```bash sqoop version ``` --- ### **二、核心命令** #### 1. **导入数据到HDFS** ```bash sqoop import \ --connect jdbc:mysql://host/dbname \ --username root \ --password 123456 \ --table employees \ --target-dir /user/hadoop/employees \ --fields-terminated-by ',' \ -m 4 # 并行任务数 ``` #### 2. **导入到Hive** ```bash sqoop import \ --connect jdbc:mysql://host/dbname \ --username root \ --password 123456 \ --table sales \ --hive-import \ --create-hive-table \ --hive-database default \ --hive-table sales_data ``` #### 3. **导出数据到数据库** ```bash sqoop export \ --connect jdbc:mysql://host/dbname \ --username root \ --password 123456 \ --export-dir /user/hive/warehouse/sales \ --table db_sales \ --input-fields-terminated-by '\t' ``` --- ### **三、关键参数详解** 1. **增量导入**(仅传输新增/更新数据) ```bash --incremental append \ # 基于追加模式 --check-column update_time \ # 检查列(需为数字或日期类型) --last-value "2023-01-01" ``` 2. **条件过滤** ```bash --where "age > 30" \ # SQL条件语句 --columns "id,name,age" # 指定导入列 ``` 3. **并行控制** ```bash -m 8 \ # 并行度 --split-by id # 数据分片字段 ``` --- ### **四、注意事项** 1. **数据类型映射**:确保数据库的`BIGINT`、`DATETIME`等类型与Hive/HDFS兼容 2. **密码安全**:建议使用`-P`参数从文件读取密码,避免命令行明文暴露 3. **空值处理**:通过`--null-string '\\N' --null-non-string '\\N'`定义空值占位符 4. **版本差异**:Sqoop 1与Sqoop 2架构不同(Sqoop 2需通过REST API操作) --- ### **五、典型应用场景** 1. 数据仓库ETL:将OLTP数据导入Hive进行离线分析 2. 机器学习:导出HDFS预处理结果到数据库供应用调用 3. 数据迁移:跨数据库系统转移历史数据(如Oracle到MySQL) --- 通过合理使用Sqoop,可显著提升结构化数据与大数据平台间的交互效率。建议结合`sqoop help [command]`查看详细参数说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值