浅谈sqoop

eija eija     2022-12-07     485

关键词:

1.sqoop的概述
a.sqoop 是一款工具,是appche 旗下的一款工具,主要是负责 hadoop与RDBMS之间的数据迁移,即从hadoop 文件系统 导出数据到RDBMS,从RDBMS导入数据到hadoop hdfs,hive,hbase等数据存储系统。
b.其实就是将 sqoop命令转换成MR程序来完成数据的迁移。
c.本质就是执行和计算,依赖于hdfs存储数据,把sql转换成程序。

技术图片

2.sqoop的工作机制
将导入或导出命令翻译成 MapReduce 程序来实现 在翻译出的 MapReduce 中主要是对 InputFormat 和 OutputFormat 进行定制

3.sqoop安装
a.前提概述
以后sqoop 会跟以下系统或者组件打交道:
HDFS,MapReduce,YARN,ZooKeeper,Hive,HBASE,Mysql
记住:sqoop就是一个工具,只需要在一个节点上进行安装即可。

b.软件下载
下载地址:http://mirrors.hust.edu.cn/apache/
版本选择:选择sqoop-1.4.6.bin_hadoop-2.0.4-alpha.tar.gz

c.安装步骤
1.拿到包之后,通过xftp上传到 mater /usr/local/app目录下
2.解压缩 tar -zxvf sqoop-1.4.6.bin_hadoop-2.0.4-alpha.tar.gz
3.将解压缩的文件移动到/usr/local/app/sqoop 目录下
sudo mv sqoop-1.4.6.bin_hadoop-2.0.4-alpha /usr/local/app/sqoop
4.进入到conf文件夹
cd /usr/local/app/sqoop/conf
5.将sqoop-env-template.sh复制为 sqoop-env.sh
6.修改sqoop-env.sh
vim sqoop-env,sh
加入以下代码,路径注意修改
export HADOOP_COMMON_HOME=/usr/local/app/hadoop

#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/usr/local/app/hadoop

#set the path to where bin/hbase is available
#export HBASE_HOME=/home/hadoop/apps/hbase-1.2.6

#Set the path to where bin/hive is available
export HIVE_HOME=/usr/local/app/hive

#Set the path for where zookeper config dir is
#export ZOOCFGDIR=/home/hadoop/apps/zookeeper-3.4.10/conf

7.加入mysql驱动包到 /usr/local/app/sqoop/lib目录下
cp mysql-connector-java-5.1.40-bin.jar /usr/local/app/sqoop/lib/

8.环境变量配置
sudo gedit ~/.bashrc
添加以下变量:
#Sqoop variable
export SQOOP_HOME=/usr/local/app/sqoop
export PATH=$PATH:$SQOOP_HOME/bin
#sqoop variable
保存退出,然后使其生效
source ~/.bashrc

9.验证安装是否成功
sqoop-version

技术图片

4.sqoop的基本命令
sqoop help

技术图片

 

查看sqoop的具体的一条命令使用,比如:
sqoop help import

1.列出MySql数据有哪些数据库
sqoop list-databases --connect jdbc:mysql://master:3306/ --username root --password 123456

技术图片

 


2.列出Mysql中的某个数据库有哪些数据表

技术图片

 


3.创建一张跟mysql中help_keyword表一样的hive表hk
执行以下脚本,报错

技术图片

 

百度给到的解决办法:
Sqoop导入mysql表中的数据到hive,出现如下错误:
ERROR hive.HiveConfig: Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR is set correctly.
命令如下:
./sqoop import --connect jdbc:mysql://slave2:3306/mysql --username root --password aaa --table people --hive-import --hive-overwrite --hive-table people --fields-terminated-by ‘\\t‘;
解决方法:
往/etc/profile最后加入 export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*
然后刷新配置,source /etc/profile

5.sqoop的数据导入导出
1.从RDBMS导入到HDFS
sqoop import \\
--connect jdbc:mysql://master:3306/mysql \\
--username root \\
--password 123456 \\
--table help_keyword \\
-m 1
-m 1 表示使用1个mapreduce

sqoop是apache开源项目,主要用于关系型数据库数据和hdfs数据的相互同步.
主要记录下-m和--split-by参数的使用:
1. 这俩参数一般是放在一起使用
2.-m:表明需要使用几个map任务并发执行
3.--split-by :拆分数据的字段. -m设置为4,数据有100条,sqoop首先会获取拆分字段的最大值,最小值,步长为100/4=25;
那么第一个map执行拆分字段值为(1,25)之间的数据
第二个map执行拆分字段值为(26,50)之间的数据
第三个map执行拆分字段值为(51,75)之间的数据
第四个map执行拆分字段值为(76,100)之间的数据

注意事项:
1.拆分字段默认为主键
2.拆分字段的数据类型最好为int,如果不是则将-m设置为1,split-by不设置
3.拆分字段的值最好分布均匀,否则会造成数据倾斜的问题

2.指定行分隔符和列分隔符,指定hive-import
sqoop import \\
--connect jdbc:mysql://master:3306/mysql \\
--username root \\
--password 123456 \\
--table help_keyword \\
--target-dir /user/hadoop/my_help_keyword1 \\
--fields-terminated-by ‘\\t‘ \\
-m 2

 技术图片

技术图片

技术图片

 

 

3.带where条件
sqoop import \\
--connect jdbc:mysql://master:3306/mysql \\
--username root \\
--password 123456 \\
--where "name=‘STRING‘ " \\
--table help_keyword \\
--target-dir /user/hadoop1/my_help_keyword1 \\
-m 1

4.查询指定列


5.指定自定义查询sql
sqoop import \\
--connect jdbc:mysql://master:3306/ \\
--username root \\
--password 123456 \\
--target-dir /user/hadoop3/myimport33_1 \\
--query ‘select help_keyword_id,name from mysql.help_keyword where $CONDITIONS and name = "STRING"‘ \\
--split-by help_keyword_id \\
--fields-terminated-by ‘\\t‘ \\
-m 4
说明:在以上需要按照自定义SQL语句导出数据到HDFS的情况下:
1、引号问题,要么外层使用单引号,内层使用双引号,$CONDITIONS的$符号不用转义, 要么外层使用双引号,那么内层使用单引号,然后$CONDITIONS的$符号需要转义
2、自定义的SQL语句中必须带有WHERE \\$CONDITIONS

6.把Mysql数据库中的表数据导入到hive中
sqoop导入关系型数据到hive的过程,是先导入到hdf中,然后再load进入hive中
6.1.普通导入:数据存储在默认的default hive库中,表名就是对应的mysql的表名:

sqoop import \\
--connect jdbc:mysql://master:3306/mysql \\
--username root \\
--password 123456 \\
--table help_keyword \\
--hive-import \\
-m 1

删除HDFS文件:
hadoop fs -rm /user/root/help_keyword/*

删除HDFS目录:
hadoop fs -rm -R /user/root/help_keyword

6.2.指定行分隔符和列分隔符,指定hive-import,指定覆盖导入,指定自动创建hive表,指定表名,指定删除中间结果数据目录
sqoop import \\
--connect jdbc:mysql://master:3306/mysql \\
--username root \\
--password 123456 \\
--table help_keyword \\
--fields-terminated-by "\\t" \\
--lines-terminated-by "\\n" \\
--hive-import \\
--hive-overwrite \\
--create-hive-table \\
--delete-target-dir \\
--hive-database mydb_test \\
--hive-table new_help_keyword

执行失败,报以下错误

技术图片

 百度之后,解决方案如下:

 技术图片

技术图片

 

增量导入:
sqoop import \\
--connect jdbc:mysql://hadoop1:3306/mysql \\
--username root \\
--password root \\
--table help_keyword \\
--target-dir /user/hadoop/myimport_add \\
--incremental append \\
--check-column help_keyword_id \\
--last-value 500 \\
-m 1

sqoop导入导出

sqoop产生背景 什么是sqoop sqoop的优势 sqoop1与sqoop2的比较  为什么选择sqoop1 sqoop在hadoop生态体系中的位置 sqoop基本架构 sqoopimport原理  sqoopimport详细流程 sqoopexport原理 sqoop安 查看详情

[sqoop]sqoop命令

 官网文档:http://sqoop.apache.org/docs/1.99.7/user/CommandLineClient.html#delete-link-function 一、了解sqoop数据导入的几个重要概念(1)connector:sqoop2中预定了各种链接,这些链接是一些配置模板。#查看预定制的连接器sqoop:000>showconnec... 查看详情

[sqoop]sqoop使用

Sqoop的本质还是一个命令行工具,和HDFS,MapReduce相比,并没有什么高深的理论。我们可以通过sqoophelp命令来查看sqoop的命令选项,如下:16/11/1320:10:17INFOsqoop.Sqoop:RunningSqoopversion:1.4.6usage:sqoopCOMMAND[ARGS]Availablecommands: codegen & 查看详情

sqoop介绍

Sqoop介绍http://sqoop.apache.orghttp://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html 1.什么是Sqoop?将关系数据库(oracle,mysql,postgresql)数据与hadoop数据进行转换的工具2.Sqoop架构?sqoop架构非常简单,是hadoop生态系统最简单的框架sqoop1由clie 查看详情

如何从 Sqoop 选项生成 Sqoop 命令?

】如何从Sqoop选项生成Sqoop命令?【英文标题】:HowtogenerateSqoopcommandfromSqoopoptions?【发布时间】:2017-04-2012:21:01【问题描述】:我想生成Sqoop命令以从Mysql导入RDBMS表。我将sqoop命令存储在数据库中,然后使用此命令创建Oozie工作流... 查看详情

[sqoop]sqoop小试牛刀

 sqoop1.4.6 小试牛刀 sqoopimport参数 1.mysql导入到hdfs中./sqoopimport--connectjdbc:mysql://mysql:3306/part--usernameroot--password123456--tablebig_hdfs-m1--target-dir/sqoop/import/mysql/&nbs 查看详情

sqoop(代码片段)

sqoop1Sqoop简介2Sqoop原理3Sqoop安装3.1下载并解压3.2修改配置文件3.3拷贝JDBC驱动3.4验证Sqoop3.5测试Sqoop是否能够成功连接数据库4Sqoop的简单使用案例4.1导入数据4.1.1RDBMS到HDFS4.1.2RDBMS到Hive4.1.3RDBMS到Hbase4.2、导出数据4.2.1HIVE/HDFS到RDBMS4.3脚... 查看详情

sqoop(代码片段)

sqoop1Sqoop简介2Sqoop原理3Sqoop安装3.1下载并解压3.2修改配置文件3.3拷贝JDBC驱动3.4验证Sqoop3.5测试Sqoop是否能够成功连接数据库4Sqoop的简单使用案例4.1导入数据4.1.1RDBMS到HDFS4.1.2RDBMS到Hive4.1.3RDBMS到Hbase4.2、导出数据4.2.1HIVE/HDFS到RDBMS4.3脚... 查看详情

sqoop(代码片段)

sqoop1Sqoop简介2Sqoop原理3Sqoop安装3.1下载并解压3.2修改配置文件3.3拷贝JDBC驱动3.4验证Sqoop3.5测试Sqoop是否能够成功连接数据库4Sqoop的简单使用案例4.1导入数据4.1.1RDBMS到HDFS4.1.2RDBMS到Hive4.1.3RDBMS到Hbase4.2、导出数据4.2.1HIVE/HDFS到RDBMS4.3脚... 查看详情

sqoop1与sqoop2

Sqoop(sqoop.apache.org)工具是hadoop环境下连接关系数据库,和hadoop存储系统的桥梁,支持多种关系数据源和hive,hdfs,hbase的相互导入。一般情况下,关系数据表存在于线上环境的备份环境,需要每天进行数据导入,根据每天的数据量... 查看详情

sqoop入门教程

目录一、Sqoop概述    1、简介    2、Sqoop架构原理    3、Sqoop连接器二、Sqoop安装    1、sqoop下载解压    2、sqoop配置文件  & 查看详情

sqoop2安装

下载http://www-us.apache.org/dist/sqoop/ 打开以上链接,开始下载sqoop2   下载后得到:sqoop-1.99.7-bin-hadoop200.tar.gz文件其中sqoop1和sqoop2区别可以参考以下链接 重拾初心——Sqoop1和Sqoop2的刨析对比 http://blog.csdn.ne 查看详情

安装sqoop,给bin/sqoop-list-databases: line 26: /Users/apple/sqoop: 是一个目录

】安装sqoop,给bin/sqoop-list-databases:line26:/Users/apple/sqoop:是一个目录【英文标题】:Installingsqoop,givebin/sqoop-list-databases:line26:/Users/apple/sqoop:isadirectory【发布时间】:2015-09-1510:15:30【问题描述】:当我安装sqoop时,它给了我这个错误。... 查看详情

sqoop快速上手(代码片段)

ETL系列之Sqoop==楼兰==文章目录一、ETL简介1、关于ETL2、大数据与传统关系型数据库的关系3、Sqoop简介二、Sqoop下载三、Sqoop基础使用3.1前置软件3.2Sqoop安装3.3Sqoop基础使用1、查看Sqoop的帮助信息2、单独连接数据库3、导... 查看详情

sqoop新品来了

Sqoop尽管稳定的应用于生产环境很多年,但是它自身存在的一些缺陷给实际操作带来了不便。Sqoop2便成为了研究使用的对象,那么Sqoop2有什么优势呢?首先我们先来了解一下Sqoop的使用情况,使用Sqoop数据不会出现丢失,而且Sqoop... 查看详情

sqoop1和sqoop2导入导出(代码片段)

sqoop11、使用Sqoop导入MySQL数据到HDFS[[email protected]~]#sqoopimport--connectjdbc:mysql://localhost:3306/test--usernameroot--passwordroot--tableuser--columns‘uid,uname‘-m1-target-dir‘/sqoop/user‘;//-m指定 查看详情

sqoop导出笔记

Sqoop导出笔记发表:2016-10-14 浏览:755 Sqoop 导出Sqoop导出笔记1、通用参数2、导出控制参数3、全表导出4、更新导出注:若需转载,请注明出处!Sqoop导出视频请参考:https://edu.hellobi.com/course/93/lessons  (Sqoop导出实... 查看详情

Sqoop 导入映射器失败,但 sqoop 作业显示正在运行

】Sqoop导入映射器失败,但sqoop作业显示正在运行【英文标题】:Sqoopimportmappersfailedbutsqoopjobisshowingrunning【发布时间】:2019-03-2520:07:42【问题描述】:我编写了一个Sqoop导入程序,使用where子句从Netezza导入数据,当where子句出现语... 查看详情