Sqoop安装和导入导出

Sqoop安装和导入导出

一,介绍

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

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

---- sqoop1 : 1.4x

---- sqoop2: 1.99x

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

二,Sqoop架构

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

sqoop1由client端直接接入hadoop,任务通过解析生成对应的MapReduce执行
在这里插入图片描述

三,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导出参数

在这里插入图片描述

九,常用操作命令

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中,如下:
在这里插入图片描述

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 ','
  • 12
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Sqoop是一个用于在Hadoop和关系型数据库之间进行数据传输的工具。它可以将数据从关系型数据库导入到Hadoop集群,也可以将数据从Hadoop集群导出到关系型数据库。下面是一个Sqoop数据导入导出的shell脚本示例: 1. 数据导入脚本: ``` sqoop import \ --connect jdbc:mysql://localhost/mydatabase \ --username root \ --password password \ --table mytable \ --target-dir /user/hadoop/mydata \ --m 1 ``` 这个脚本将从MySQL数据库的mytable表导入数据,并将数据存储在Hadoop集群的/user/hadoop/mydata目录下。其,--connect参数指定了数据库连接URL,--username和--password参数指定了数据库的用户名和密码,--table参数指定了要导入的表名,--target-dir参数指定了数据存储的目录,--m参数指定了并行度。 2. 数据导出脚本: ``` sqoop export \ --connect jdbc:mysql://localhost/mydatabase \ --username root \ --password password \ --table mytable \ --export-dir /user/hadoop/mydata \ --input-fields-terminated-by '\t' \ --input-lines-terminated-by '\n' ``` 这个脚本将从Hadoop集群的/user/hadoop/mydata目录读取数据,并将数据导出到MySQL数据库的mytable表。其,--connect参数指定了数据库连接URL,--username和--password参数指定了数据库的用户名和密码,--table参数指定了要导出的表名,--export-dir参数指定了数据读取的目录,--input-fields-terminated-by和--input-lines-terminated-by参数指定了输入数据的分隔符。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值