前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Sqoop——将关系数据库数据与hadoop数据进行转换的工具

Sqoop——将关系数据库数据与hadoop数据进行转换的工具

作者头像
时间静止不是简史
发布2020-07-24 16:54:33
1.1K0
发布2020-07-24 16:54:33
举报
文章被收录于专栏:Java探索之路Java探索之路

Sqoop

  • 第一章 Sqoop是什么
    • 介绍
    • 架构
  • 第二章 Sqoop安装
  • 第三章 Sqoop操作
    • 连接操作
      • 连接参数
    • 导入操作
      • 导入参数
    • 操作操作
      • 导出参数

第一章 Sqoop是什么

介绍

  • Apache Sqoop(TM)是一种旨在Apache Hadoop和结构化数据存储(例如关系数据库)之间高效传输批量数据的工具 (将关系数据库(oracle、mysql、postgresql等)数据与hadoop数据进行转换的工具)。
  • Sqoop于2012年3月成功地从孵化器毕业,现在是Apache的顶级项目
  • 最新的稳定版本是1.4.7。Sqoop2的最新版本为1.99.7。请注意,1.99.7与1.4.7不兼容且功能不完整,因此不适用于生产部署。
  • 版本:(两个版本完全不兼容,sqoop1使用最多) sqoop1:1.4.x sqoop2:1.99.x
  • 同类产品 DataX:阿里顶级数据交换工具
  • 官网:http://sqoop.apache.org/

架构

sqoop架构非常简单,是hadoop生态系统的架构最简单的框架。 sqoop1由client端直接接入hadoop,任务通过解析生成对应的maprecue执行

在这里插入图片描述
在这里插入图片描述

Sqoop的输入输出/导入导出是相对于文件系统HDFS的, 因此HDFS的导入导出如图1,图2

图1 导入

在这里插入图片描述
在这里插入图片描述

图2 导出

在这里插入图片描述
在这里插入图片描述

第二章 Sqoop安装

单机版安装步骤:

代码语言:javascript
复制
1、解压, 移动到相关目录( 软件及mysql驱动在底部分享 )
mv sqoop-env-template.sh sqoop-env.sh

2、配置环境变量 
export SQOOP_HOME=/XX/sqoop.xx
source /etc/profile

3、添加数据库驱动包
cp mysql-connector-java-5.1.10.jar /sqoop-install-path/lib

4、重命名配置文件,修改配置内容( 图1)
注意: 如果前缀和这个文档中的命名一致的话就不需要指定环境变量了, 如hive 和 hbase
mv sqoop-env-template.sh sqoop-env.sh
-----------------------------------------------------
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/opt/chy/hadoop

#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/opt/chy/hadoop
-----------------------------------------------------



5、修改配置configure-sqoop( 图2 )
注意: 去掉未安装服务相关内容;例如(HBase、HCatalog、Accumulo),这样做是运行sqoop命令出现的警告
#if [ ! -d "${HBASE_HOME}" ]; then
#  echo "Error: $HBASE_HOME does not exist!"
#  echo 'Please set $HBASE_HOME to the root of your HBase installation.'
#  exit 1

6、测试
sqoop version ( 图3)
# 连接后的效果(图4,图5),可以看到mysql数据库中的已经被sqoop连接
sqoop list-databases -connect jdbc:mysql://node1:3306/ -username root -password 123 


# 技巧: 连接mysql速度慢怎么办?
# 解决: 取消名称检测,提升访问速度
vim /etc/my.cnf
------------------
skip-name-resolve

sqoop list-databases -connect jdbc:mysql://47.97.169.52:3307/ -username root -password root 图1

在这里插入图片描述
在这里插入图片描述

图2

在这里插入图片描述
在这里插入图片描述

图3

在这里插入图片描述
在这里插入图片描述

图4

在这里插入图片描述
在这里插入图片描述

图5

在这里插入图片描述
在这里插入图片描述

第三章 Sqoop操作

在sqoop的docs目录下,打开index,html即可查看官网内容 file:///F://spoop/sqoop-1.4.7.bin__hadoop-2.6.0/docs/SqoopUserGuide.html#_literal_sqoop_export_literal

连接操作

连接参数

代码语言:javascript
复制
# 直连,连接一次就会失效
sqoop list-databases -connect jdbc:mysql://node1:3306/ -username root -password 123 

# 通过自定义配置文件连接, 将需要导入或导出的参数写在配置文件汇总
sqoop --options-file 自定义文件
在这里插入图片描述
在这里插入图片描述

导入操作

前提:因为要使用MapReduce框架所以需要启动DN和RM

代码语言:javascript
复制
# mr程序一直处于阻塞状态需要查看nodemanager是否启动成功
## 启动NM
start-yarn.sh
##勿忘记启动resourcemanager
yarn-daemon.sh start resourcemanager
## 8032 端口,resourcemanager

导入参数

在这里插入图片描述
在这里插入图片描述

演示案例

代码语言:javascript
复制
# 1. 编写自定义启动文件
[root@node4 sqoop]# vim option 
## 插入指定字段书写方式
------------------------------
import
--connect
jdbc:mysql://node1:3307/result_db
--username
root
--password
root
--as-textfile
--columns
id,browser_name
--table
dimension_browser
--delete-target-dir
-m
1
--target-dir
/sqoop/data
------------------------------

## 插入sql语句方式
------------------------------
import
--connect
jdbc:mysql://node1:3307/result_db
--username
root
--password
root
--as-textfile
--delete-target-dir
-m
1
--target-dir
/sqoop/data
-e
select * from dimension_browser where $CONDITIONS
------------------------------

## 将数据导入到hive中
------------------------------
import
--connect
jdbc:mysql://47.97.169.52:3307/result_db
--username
root
--password
root
--as-textfile
--query
'select * from dimension_browser where $CONDITIONS'
--delete-target-dir
--target-dir
/sqoop/tmp
-m
1
--hive-import
--create-hive-table
--hive-table
browser
----------------------注意: 这里如果无法自动建表,则需要我们在hive中创建对应的表,然后通过load data inpath '/sqoop/tmp/part-m-00000' into table browser;导入到hive数据中------------------------------




# 注意
## $CONDITIONS: -e情况下必须添加,类似mybatis的动态查询
## 在有条写的情况下格式 select * from dimension_browser where $CONDITIONS where id>20
# 3.运行测试
[root@node4 sqoop]# sqoop --options-file option
# 查看是否导入成功?是否生成了相关的文件,图1
# 通过hive查看文件的内容,图2

导入时出现异常的解决: ERROR hive.HiveConfig: Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR is set correctly.

图1

在这里插入图片描述
在这里插入图片描述

图2

在这里插入图片描述
在这里插入图片描述

操作操作

导出参数

在这里插入图片描述
在这里插入图片描述

演示案例

代码语言:javascript
复制
# 导出到mysql
export
--connect
jdbc:mysql://node01:3307/test
--username
root
--password
123
-m
1
--columns
id,browser_name,browser_version
--export-dir
/sqoop/data
--table
h_browser


# 导出到mysql 指定分隔符(导入同理)
export
--connect
jdbc:mysql://node01:3307/test
--username
root
--password
123
-m
1
--columns
id,browser_name,browser_version
--export-dir
/sqoop/data
--table
h_browser
--input-fields-terminated-by
分隔符( eg: 逗号,顿号,^A.,\t..)

注意: 1.需要被导出的hdfs目录下有数据 ,即需要结合导入一起使用 2.导出数据到mysql时, 需要在mysql创建对应的表 (字段类型名称要匹配)


链接:https://pan.baidu.com/s/1P_BndD3_bmafHI_7tTVwPA 点赞私聊获取提取码哦~~~ 提取码:u7tb

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Sqoop
  • 第一章 Sqoop是什么
    • 介绍
      • 架构
      • 第二章 Sqoop安装
      • 第三章 Sqoop操作
        • 连接操作
          • 连接参数
        • 导入操作
          • 导入参数
        • 操作操作
          • 导出参数
      相关产品与服务
      云数据库 SQL Server
      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档