Sqoop安装和导入导出

Sqoop安装和导入导出

一,介绍

​ Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库*(例如 : MySQL ,Oracle ,Postgres等)*中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
Sqoop安装和导入导出
Sqoop安装和导入导出

版本:(两个版本完全不兼容,sqoop1使用最多)

---- sqoop1 : 1.4x

---- sqoop2: 1.99x

同类产品:DataX(阿里*数据交换工具)

二,Sqoop架构

sqoop架构非常简单,是hadoop生态系统中架构最简单的框架。

sqoop1由client端直接接入hadoop,任务通过解析生成对应的MapReduce执行
Sqoop安装和导入导出
Sqoop安装和导入导出

三,Sqoop导入流程图

Sqoop安装和导入导出
Sqoop安装和导入导出

四,Sqoop导出流程图

Sqoop安装和导入导出
Sqoop安装和导入导出

五,Sqoop安装

1.上传解压

2.配置sqoop的环境变量,局部,全局随意(不会的查看之前的 Linux配置环境变量博客)

---- 配置完 切记 执行 source命令,环境变量才能生效

3.在sqoop安装目录下 lib目录下 添加 mysql数据库驱动包

4.进入到conf目录,重命名 sqoop-env-template.shsqoop-env.sh

5.进入到 bin目录,修改配置 configure-sqoop

----去掉相关未安装的服务;例如(Hbase,HCatalog,Accumulo);

下面是我注释掉的内容(根据自己安装服务注释):


## Moved to be a runtime check in sqoop.

#if [ ! -d "${HCAT_HOME}" ]; then
#  echo "Warning: $HCAT_HOME does not exist! HCatalog jobs will fail."
#  echo 'Please set $HCAT_HOME to the root of your HCatalog installation.'
#fi

#if [ ! -d "${ACCUMULO_HOME}" ]; then
#  echo "Warning: $ACCUMULO_HOME does not exist! Accumulo imports will fail."
#  echo 'Please set $ACCUMULO_HOME to the root of your Accumulo installation.'
#fi

  1. 测试

    sqoop version
    

    如果报 HADOOP_COMMON_HOME not found 去到 conf目录下 编辑 sqoop-env.sh

    #Set path to where bin/hadoop is available
    export HADOOP_COMMON_HOME=/home/hadoop-2.6.5  ##你的Hadoop安装目录
    
    #Set path to where hadoop-*-core.jar is available
    export HADOOP_MAPRED_HOME=/home/hadoop-2.6.5  ##你的Hadoop安装目录
    

如果能查看到 版本号说明安装配置成功了.

六,Sqoop参数

Sqoop安装和导入导出
Sqoop安装和导入导出

七,Sqoop导入参数

Sqoop安装和导入导出
Sqoop安装和导入导出

八,Sqoop导出参数

Sqoop安装和导入导出
Sqoop安装和导入导出

九,常用操作命令

mysql导入到HDFS:

sqoop import  --connect jdbc:mysql://node01:3306/psn(mysql数据库名) --username root --password 123456(mysql账号密码) --as-textfile --columns id,name,msg --table psn(数据库中表的名字) --delete-target-dir -m1(map个数) --target-dir /sqoop/data(存储在HDFS上的目录) 

mysql导入到hive:

sqoop-import  --connect jdbc:mysql://node01/psn --username root --password 123456 --table psn(数据库中表的名字)  --hive-import -m 1

HDFS导出到Mysql:

sqoop export --connect jdbc:mysql://node01/psn --username root --password 123456 -m1 --columns id,name,msg --export-dir /sqoop/data(HDFS文件存储路径)  --table psn(表得提前建号)  

Hive导出到 Mysql上 (针对从mysql 导入到 hive的数据 分隔符是 \001 隐藏分割字符)

sqoop-export --connect jdbc:mysql://node01/psn --username root --password 123456 --table psn --export-dir '/user/hive_local/warehouse/psn' --fields-terminated-by '\001'

mysql导入到hive中,如下:
Sqoop安装和导入导出
Sqoop安装和导入导出

SOH代表的就是隐藏分割字符

Hive导出到 Mysql上 (针对从mysql 导入到 hive的数据 分隔符一般随情况而定)

sqoop-export --connect jdbc:mysql://node01/psn --username root --password 123456 --table psn --export-dir '/user/hive_local/warehouse/psn' --fields-terminated-by ','
上一篇:Sqoop安装及基本使用


下一篇:Sqoop