【sqoop】简介、原理、安装配置测试、导入导出案例、脚本打包、常见命令及参数介绍、常用命令举例

一、sqoop简介

用于在Hadoop(Hive)与传统的数据库(mysql、oracle...)之间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

二、sqoop原理

将导入或导出命令翻译成mapreduce程序来实现。
在翻译出的mapreduce中主要是对inputformat和outputformat进行定制

三、sqoop安装

前提:java和Hadoop

1、下载解压

tar -zxf

2、修改配置文件sqoop-env.sh

配置zk、Hadoop、hive、hbase等目录

3、拷贝JDBC驱动到sqoop的lib目录

4、验证Sqoop

bin/sqoop help

5、测试Sqoop是否能够成功连接数据库

bin/sqoop list-databases --connect jdbc:mysql://hadoop102:3306/ --username root --password 123456

四、sqoop的简单使用案例

1、导入数据bin/sqoop import

全部导入

导入指定列 --columns

导入指定行 --where

查询导入:--query "select * from staff where \$CONDITIONS and id <= 25"

RDBMS到Hive:--hive-import

RDBMS到Hbase:--hbase-create-table

2、导出数据

HIVE/HDFS到RDBMS:--export-dir /company 

Mysql中如果表不存在,不会自动创建

3、脚本打包

使用opt格式的文件打包sqoop命令

touch opt/job_mysql2hdfs.opt

vim opt/job_mysql2hdfs.opt

import
--connect
jdbc:mysql://hadoop102:3306/company
--username
root
--password
123456
--table
staff
--target-dir
/company3
--delete-target-dir
--num-mappers
1
--fields-terminated-by
"\t"
--split-by
id

五、sqoop的一些命令和参数

1、常用命

序号

命令

说明

1

import

ImportTool

将数据导入到集群

2

export

ExportTool

将集群数据导出

3

codegen

CodeGenTool

获取数据库中某张表数据生成Java并打包Jar

4

create-hive-table

CreateHiveTableTool

创建Hive

5

eval

EvalSqlTool

查看SQL执行结果

6

import-all-tables

ImportAllTablesTool

导入某个数据库下所有表到HDFS

7

job

 

JobTool

用来生成一个sqoop的任务,生成后,该任务并不执行,除非使用命令执行该任务。

8

list-databases

ListDatabasesTool

列出所有数据库名

9

list-tables

ListTablesTool

列出某个数据库下所有表

10

merge

MergeTool

HDFS中不同目录下面的数据合在一起,并存放在指定的目录中

11

metastore

 

MetastoreTool

记录sqoop job的元数据信息,如果不启动metastore实例,则默认的元数据存储目录为:~/.sqoop,如果要更改存储目录,可以在配置文件sqoop-site.xml中进行更改。

12

help

HelpTool

打印sqoop帮助信息

13

version

VersionTool

打印sqoop版本信息

2、命令&参数详解

 3、例子

导入数据到hive

$ bin/sqoop import \
--connect jdbc:mysql://hadoop102:3306/company \
--username root \
--password 123456 \
--table staff \
--hive-import

导出到关系型数据库

$ bin/sqoop export \
--connect jdbc:mysql://hadoop102:3306/company \
--username root \
--password 123456 \
--table staff \
--export-dir /user/company \
--input-fields-terminated-by "\t" \
--num-mappers 1

将数据库表映射为java类

$ bin/sqoop codegen \
--connect jdbc:mysql://hadoop102:3306/company \
--username root \
--password 123456 \
--table staff \
--bindir /home/admin/Desktop/staff \
--class-name Staff \
--fields-terminated-by "\t"

 

posted @ 2021-11-30 22:22  哥们要飞  阅读(182)  评论(0编辑  收藏  举报