Sqoop学习笔记

news2024/11/22 6:46:51

1 简介

Sqoop是Apache下的一款数据传输工具,用于Hadoop和关系型数据库等结构化数据存储之间的数据传输。

最新的稳定版本是1.4.7,Sqoop2 的最新版本是 1.99.7。请注意,1.99.7 与 1.4.7不兼容,且没有特征不完整,也并不打算用于生产部署。

导入数据(import):RDBMS(mysql、Oracle)--->Hadoop(HDFS、Hive、HBase)

导出数据(export):Hadoop(HDFS、Hive)---->RDBMS

2 原理

Hive本质:执行mr程序,依赖hdfs存储数据,把sql转换成mr程序。

sqoop本质:数据迁移。

迁移方式:将导入或导出命令翻译成mapreduce 程序来实现。

在翻译出的mapreduce中主要是对inputformat和outputformat进行定制,可自定义多个format。

Hadoop中只用hdfs,去掉yarn和mapreduce框架,与spark结合使用,加速执行。

3 安装

软件:

sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz

mysql-connector-java-5.1.46-bin.jar

解压:

[root@master src]# tar -xvfsqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /usr/local/

[root@master local]# mvsqoop-1.4.6.bin__hadoop-2.0.4-alpha/ sqoop-1.4.6

环境变量配置

vim /etc/profile(工作中使用单用户目录)

#####################sqoop

export SQOOP_HOME=/usr/local/sqoop-1.4.6

export PATH=$PATH:$SQOOP_HOME/bin

配置sqoop文件

[root@master conf]# cpsqoop-env-template.sh sqoop-env.sh

[root@master conf]# vim sqoop-env.sh

#Set path to where bin/hadoop is available

exportHADOOP_COMMON_HOME=/usr/local/hadoop-2.8.4

#Set path to where hadoop-*-core.jar isavailable

exportHADOOP_MAPRED_HOME=/usr/local/hadoop-2.8.4

#set the path to where bin/hbase isavailable

export HBASE_HOME=/usr/local/hbase-0.98.6

#Set the path to where bin/hive isavailable

export HIVE_HOME=/usr/local/hive-1.2.2

#Set the path for where zookeper config diris

export ZOOCFGDIR=/usr/local/zookeeper-3.4.5

配置bin目录下的configure-sqoop

注释135-147,就是hadoop,hbase等的日志干扰

拷贝jar包

[root@master lib]# cp -a/usr/local/src/mysql-connector-java-5.1.46/mysql-connector-java-5.1.46-bin.jar .

查看版本:sqoop version

查看命令:sqoop help

启动hadoop、zookeeper、mysql

连接数据库:

[root@master ~]#sqoop list-databases --connectjdbc:mysql://master:3306/ --username root --password 123456

4 RDBMS导入到Hive

(1)   查询导入数据:查询表中某些数据导入到hdfs中。

先进入数据库,并创建表

mysql> create database company;
mysql> create table company.staff(id int(4) primary key not nullauto_increment, name
varchar(255), sex varchar(255));
 

插入数据

mysql> insert into company.staff(name, sex)values('Thomas', 'Male');
mysql> insert into company.staff(name, sex) values('Catalina', 'FeMale');

全部导入

[root@master ~]#sqoop import \

--connect jdbc:mysql://linux01:3306/company \
--username root \
--password 123456 \
--table staff \
--target-dir /user/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t"

Target-dir:hdfs目录

num-mappers:map个数,看数据量来定,一个map一个文件

误删:hadoop有个回收站,可以找回来

Mysql数据导入到hdfs,默认的列分隔是“,”,默认的行分隔符是“\n”

查看:

到hdfs中查看/user/company数据

(2)   查询导入数据:查询表中某些数据导入到hdfs中。

[root@master ~]# sqoop import \
--connect jdbc:mysql://linux01:3306/company \
--username root \
--password 123456 \
--target-dir /user/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--query 'select name,sex from staff where id <=1 and $CONDITIONS;'

must contain'$CONDITIONS' in WHERE clause.
如果 query 后使用的是双引号,则$CONDITIONS 前必须加转移符,防止 shell识别为自己的变量。
--query 选项, 不能同时与--table 选项使用

在使用query的时候,后面必须加条件,在任务产生多个map的时候,用条件表示从哪个map开始读取数据

(3)   导入指定列

[root@master ~]# sqoop import \
--connect jdbc:mysql://linux01:3306/company \
--username root \

--password 123456 \
--target-dir /user/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--columns id,sex \
--table staff

columns 中如果涉及到多列,用逗号分隔,分隔时不要添加空格

还可以导入数据的时候先对数据进行修改再导入

(4)   使用sqoop关键字筛选查询导入数据

[root@master ~]# sqoop import \
--connect jdbc:mysql://linux01:3306/company \
--username root \
--password 123456 \
--target-dir /user/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--table staff \
--where "id=1"

在 Sqoop 中可以使用 sqoop import -D property.name=property.value 这样的方式加入执行任务的参数,多个参数用空格隔开。

5 RDBMS导入到Hive

[root@master ~]# sqoop import \
--connect jdbc:mysql://linux01:3306/company \
--username root \
--password 123456 \
--table staff \

--num-mappers 1 \
--hive-import \
--fields-terminated-by "\t" \
--hive-overwrite \
--hive-table staff_hive

该过程分为两步,第一步将数据导入到 HDFS,默认的临时目录是/user/admin/表名,第二步将导入到 HDFS的数据迁移到 Hive 仓库。

6 Hive/HBase到RDBMS

导出使用export 命令

[root@master ~]# sqoop export \
--connect jdbc:mysql://linux01:3306/company \
--username root \
--password 123456 \
--table staff \
--num-mappers 1 \
--export-dir /user/hive/warehouse/staff_hive \
--input-fields-terminated-by "\t"

export-dir:数据存放的地址。

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

7 脚本打包

Hive中:hive -f xxx.sql

Sqoop也可以执行脚本文件的,使用 opt 格式的文件打包 sqoop命令,然后执行

[root@master sqoop]# cat hdfs_RDBMS.opt

export

--connect

jdbc:mysql://linux01:3306/company

--username

root

--password

123456

--table

staff

--num-mappers

1

--export-dir

/user/hive/warehouse/staff_hive

--input-fields-terminated-by

"\t"

[root@master sqoop]# sqoop --options-filehdfs_RDBMS.opt

再到数据库中查看

常用参数

数据库连接参数

Import参数

Export参数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/575754.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

规则引擎入门-基于easy-rules

目录 概念理解实例和编码抽象出2条规则简单的规则引擎事实1的处理事实2的处理 easy-rules 规则的抽象和执行事实描述规则的抽象默认的规则 动态代理执行规则和动作规则的执行&#xff1a;org.jeasy.rules.core.DefaultRulesEngine#doFirepublic class RuleProxy implements Inv…

递归的基本概念

分类&#xff1a; 直接递归 间接递归 如果递归函数中调用递归的语句为最后一个执行语句&#xff0c;则称这种递归为尾递归 递归使用条件 原问题可以划为一个或多个子问题&#xff0c;且子问题的求解方式与原问题相同&#xff0c;只是数量规模不同 递归的调用次…

突破职场难题有效沟通、应对压力、提升能力,实现职场成功

在竞争激烈的职场中&#xff0c;我们经常面临各种职场挑战&#xff0c;例如如何有效沟通、应对工作压力以及提升职业能力等。下面分享一下在职场中的经验&#xff0c;帮助你提升职场技能&#xff0c;实现出色表现&#xff1a; 一、高效沟通&#xff1a; 倾听与理解&#xff1…

5.26~5.27

https://blog.csdn.net/m0_72827793/article/details/130478513 接着之前的内容 32bit.exe为何运行不了&#xff1f; 第一个问题当我运行32bbit.exe 那是因为我编译出的程序时64位的程序 64位程序和32位程序&#xff0c;在编译的时候&#xff0c;具有差异&#xff0c;在32位…

Qt_C++读写M1IC卡源码支持windows国产linux操作系统

Android Linux RFID读写器NFC发卡器WEB可编程NDEF文本/智能海报/-淘宝网 (taobao.com) IC卡的特性 1、分为16个扇区&#xff0c;每个扇区为4块&#xff0c;每块16个字节,以块为存取单位&#xff1b; 2、每个扇区有独立的一组密码及访问控制&#xff1b; 3、每张卡有唯一序列号…

HACK ME PLEASE: 1实战演练

文章目录 HACK ME PLEASE: 1实战演练一、前期准备1、相关信息 二、信息收集1、访问网站2、端口扫描2、扫描目录3、访问网站4、访问网站5、扫描目录6、访问网站7、登录MySQL数据库8、查看数据表9、查看users表的内容10、查看tblUsers表内容11、解密12、加密13、修改密码14、查询…

CentOS7.6(Linux)环境下有网和无网安装Docker

1、 服务器有网环境 1.1、手动卸载旧版本 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine1.2、安装yum-utils sudo yum install -y yum-utils \device-mapper-per…

项目并行管理指南:如何做好多项目管理?

多项目并行已经是大部分企业的现状&#xff0c;多项目并行同时进行已然是大部分企业的现状&#xff0c;同时管理多个项目是一件具有挑战性的&#xff0c;但是有一些方法和工具可以帮助我峨嵋你有条理地实施项目&#xff0c;提高效率&#xff0c;降低工作压力。 一&#xff0c;设…

【C++系列P4】模板搞不懂?脑阔抖三抖!!精讲一篇过!

前言 大家好吖&#xff0c;欢迎来到 YY 滴 C系列 &#xff0c;热烈欢迎&#xff01;本章主要内容面向接触过C的老铁&#xff0c;主要内容含 目录 一.模板 1.函数模板 一.函数模板概念 二.函数模板的格式 三.函数模板的实例化 1.隐式实例化 2.显式实例化 3.模板参数的…

多模态应用展望——看图聊天、BLIP2

看图聊天 BLIP2 是 salesforce 公司开源的多模态模型&#xff0c;其大致的原理&#xff0c;可以类比看图写作&#xff0c;当前 AI 在文生图模式之外&#xff0c;也支持图生文模式&#xff0c;可以将照片中的核心元素识别出来。然后把这些元素作为上下文&#xff0c;交给 ChatG…

MYSQL 8 中间字段有NULL 值,还是无法走索引,所以我高估了MYSQL 的查询智商

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

并查集(算法)

目录 一、并查集的概念二、并查集的使用合并集合连通块中点的数量食物链带权并查集扩展域并查集 一、并查集的概念 最裸并查集&#xff1a; 将两个集合合并。 询问两个元素是否在一个集合当中 &#xff0c;近乎 O ( 1 ) O(1) O(1) 时间内支持两个操作 基本原理&#xff1a…

chatgpt赋能python:Python文件大小:如何优化和管理您的文件大小

Python 文件大小&#xff1a;如何优化和管理您的文件大小 Python 是世界上最流行的编程语言之一&#xff0c;被广泛用于各种不同的应用程序。但是&#xff0c;随着项目变得越来越复杂&#xff0c;并且在需要处理大量数据的情况下&#xff0c;文件大小经常成为一个问题。因此&a…

数据包伪造、替换、劫持,https劫持之探索和测试

&#xff08;一&#xff09;数据包替换攻击 该攻击过程如下&#xff1a;伪造服务器响应客户端的数据包。监听客户端的数据包&#xff0c;用预先伪造的数据包&#xff0c;伪装成服务器返回的数据发送给客户端。 因为攻击者跟目标在同一个局域网&#xff0c;所以攻击者发送的数…

算法27:最长公共子序列——样本模型(4)

目录 简介 题目&#xff1a; 思路&#xff1a; 递归版本&#xff1a; 根据递归 分析推导 动态规划版本&#xff1a; 简介 前面刷了几道题目&#xff0c;都是从暴力递归到递归动态规划的版本&#xff0c;最后演变成纯动态规划的版本。接下来的题目&#xff0c;将会跳过 递…

chatgpt赋能python:Python找出列表中出现最多的元素

Python找出列表中出现最多的元素 介绍 在Python的编程过程中&#xff0c;经常需要处理列表&#xff0c;而处理列表时最常见的问题之一就是如何找出列表中出现最多的元素。在某些情况下&#xff0c;我们可能需要确定列表中重复出现最多的元素&#xff0c;并将其提取出来。Pyth…

[机器学习]线性回归

准备入门一下机器学习算法。 今天学习了线性回归&#xff0c;都是理论的东西&#xff0c;没有对于代码的实现&#xff0c;代码也会跟着进度好好搞一下。 对于线性回归的基础概念&#xff0c;我感觉很依靠概率论和线性代数两门课&#xff0c;作为刚准备完数学一考研的我&#xf…

Systrace系列12 —— CPU Info 解读

本文主要是对 Systrace 中的 CPU 信息区域(Kernel)进行简单介绍,简单介绍了如何在 Systrace 中查看 Kernel 模块输出的 CPU 相关的信息,了解 CPU 频率、调度、锁频、锁核相关的信息。 CPU 区域图例 下面是高通骁龙 845 手机 Systrace 对应的 Kernel 中的 CPU Info 区域(底下…

人工智能轨道交通行业周刊-第46期(2023.5.22-5.28)

本期关键词&#xff1a;数字孪生、AI铁路人、道岔、施封锁、图像质量评价、大模型小型化 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通RailMetro轨道…

在VIVADO下烧写ZC706板载FLASH的操作步骤

1&#xff0c;原理图分析 首先看原理图&#xff0c;我们兼容ZC706的板子有两片 FLASH&#xff0c;型号是S25FL128A,连接方式如下&#xff1a; 可以看到两片是分别接在了XC7Z045芯片的引脚上&#xff0c;是互不相干的并联方式&#xff0c;每个FLASH芯片支持X4模式&#xff0c;也…