当前位置: 首页 > news >正文

Hadoop-sqoop

sqoop

1. Sqoop简介及原理

简介:

Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysq1.postgresql..)间进行数据的传递,可以将一个关系型数据库(例如: MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop 的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

Sqoop项目开始于2009年,最早是作为Hadoop 的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个Apache项目。v

Sqoop2的最新版本是1.99.7。请注意,2与1不兼容,且特征不完整,它并不打算用于生产部署。

原理:

将导入或导出命令翻译成mapreduce程序来实现。

在翻译出的mapreduce中主要是对inputformat和 outputformat进行定制。

2.sqoop安装部署

解压、改名

[root@kb129 install]# tar -xvf ./sqoop-1.4.7.tar.gz -C /opt/soft/

[root@kb129 soft]# mv sqoop-1.4.7/ sqoop147

拷贝配置文件

[root@kb129 conf]# pwd

/opt/soft/sqoop147/conf

[root@kb129 conf]# cp sqoop-env-template.sh sqoop-env.sh

编辑配置文件

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

export HADOOP_COMMON_HOME=/opt/soft/hadoop313

export HADOOP_MAPRED_HOME=/opt/soft/hadoop313

export HBASE_HOME=/opt/soft/hbase235

export HIVE_HOME=/opt/soft/hive312

export HIVE_CONF_DIR=/opt/soft/hive312/conf

export ZOOCFGDIR=/opt/soft/zk345/conf

解压

[root@kb129 install]# tar -xvf ./sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C ./

拷贝jar包至sqoop147根路径下

[root@kb129 sqoop-1.4.7.bin__hadoop-2.6.0]# cp ./sqoop-1.4.7.jar /opt/soft/sqoop147/

继续拷贝jar包

[root@kb129 lib]# pwd

/opt/soft/sqoop147/lib

[root@kb129 lib]# cp /opt/soft/hive312/lib/hive-common-3.1.2.jar ./

[root@kb129 lib]# cp /opt/install/sqoop-1.4.7.bin__hadoop-2.6.0/lib/avro-1.8.1.jar ./

[root@kb129 lib]# cp /opt/soft/hive312/lib/mysql-connector-java-8.0.29.jar ./

拷贝完毕:

配置sqoop环境变量并source

#SQOOP

export SQOOP_HOME=/opt/soft/sqoop147

export PATH=$SQOOP_HOME/bin:$PATH

验证安装

[root@kb129 lib]# sqoop version

3.sqoop操作基本命令

3.1  基本操作:参考 https://www.cnblogs.com/qingyunzong/p/8807252.html

查看sqoop一般操作命令

[root@kb129 lib]# sqoop help

连接mysql命令(\代表换行输入)

[root@kb129 lib]# sqoop list-databases \

 --connect jdbc:mysql://kb129:3306/ \

 --username root \

 --password 123456

查看sql50数据库内的表

[root@kb129 lib]# sqoop list-tables --connect jdbc:mysql://kb129:3306/sql50 --username root --password 123456

在hive默认库中创建表(来源mysql库中的help_keyword表,仅复制表结构)

[root@kb129 lib]# sqoop create-hive-table \

--connect jdbc:mysql://kb129:3306/mysql \

--username root --password 123456 \

--table help_keyword \

--hive-table hk

3.2  Sqoop import

1、从Mysql导入到HDFS中

1)导入mysql库中的help_keyword的数据到HDFS默认路径上/user/root

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

导入sql50库中的student表的数据到HDFS默认路径上

sqoop import --connect jdbc:mysql://kb129:3306/sql50 --username root --password 123456 --table student -m 1

2)导入: 指定分隔符,指定导入路径

sqoop import --connect jdbc:mysql://kb129:3306/sql50 --username root --password 123456 --table student --target-dir /kb23/student --fields-terminated-by '\t' -m 1

3)导入数据:带where条件

sqoop import --connect jdbc:mysql://kb129:3306/mysql --username root --password 123456 --where "name='STRING'" --table help_keyword --target-dir /kb23/hk1 -m 1

4)导入:指定自定义查询SQL

sqoop import --connect jdbc:mysql://kb129:3306/mysql --username root --password 123456 --target-dir /kb23/hk2 --query 'select help_keyword_id,name from help_keyword where $CONDITIONS and name="STRING"' --split-by help_keyword_id --fields-terminated-by ':' -m 4

在以上需要按照自定义SQL语句导出数据到HDFS的情况下:

(1)引号问题,要么外层使用单引号,内层使用双引号,$CONDITIONS的$符号不用转义, 要么外层使用双引号,那么内层使用单引号,然后$CONDITIONS的$符号需要转义

(2)自定义的SQL语句中必须带有WHERE \$CONDITIONS

2、把MySQL数据库中的表数据导入到Hive中

1)Sqoop 导入关系型数据到 hive 的过程是先导入到 hdfs,然后再 load 进入 hive

普通导入:数据存储在默认的default hive库中,表名就是对应的mysql的表名

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

导入过程

第一步:导入mysql.help_keyword的数据到hdfs的默认路径

第二步:自动仿造mysql.help_keyword去创建一张hive表, 创建在默认的default库中

第三步:把临时目录中的数据导入到hive表中

2)指定行分隔符和列分隔符,指定hive-import,指定覆盖导入,指定自动创建hive表,指定表名,指定删除中间结果数据目录

sqoop import  \

--connect jdbc:mysql://kb129:3306/mysql  \

--username root  \

--password 123456  \

--table help_keyword  \

--hive-import  \

--hive-overwrite  \

--create-hive-table  \

--delete-target-dir \

--hive-database  kb23db \

--hive-table new_help_keyword

3)增量导入(追加)

(执行增量导入之前,先清空hive数据库中的my_help_keyword表中的数据,方便查看)

从原表501行数据开始到最后,追加到目标表中

sqoop import  \

--connect jdbc:mysql://kb129:3306/mysql  \

--username root  \

--password 123456  \

--table help_keyword  \

--hive-import  \

--incremental  append  \

--hive-database kb23db \

--check-column  help_keyword_id \

--last-value 500  \

-m 1

在实际工作当中,数据的导入,很多时候都是只需要导入增量数据即可,并不需要将表中的数据每次都全部导入到 hive 或者 hdfs 当中去这样会造成数据重复的问题。因此一般都是选用一些字段进行增量的导入, sqoop 支持增量的导入数据。

-- 所谓的增量数据指的是上次至今中间新增加的数据

-- sqoop支持两种模式的增量导入

append追加 根据数值类型字段进行追加导入, 大于指定的last-value

lastmodified 根据时间戳类型字段进行追加, 大于等于指定的last-value

注意在lastmodified模式下,还分为两种情形: append merge-key

增量导入是仅导入新添加的表中的行的技术。

--check-column(col)

用来指定一些列,这些列在增量导入时用来检查这些数据是否作为增量数据进行导入,和关系型数据库中的自增字段及时间戳类似。

注意:这些被指定的列的类型不能使任意字符类型,如 char、varchar 等类型都是不可以的,同时-- check-column 可以去指定多个列。

--incremental(mode)

append:追加,比如对大于 last-value 指定的值之后的记录进行追加导入。

lastmodified:最后的修改时间,追加 last-value 指定的日期之后的记录。

--last-value(value)

指定自从上次导入后列的最大值(大于该指定的值),也可以自己设定某一值。

3、把MySQL数据库中的表数据导入到hbase

3.3  Sqoop export

参考小白篇(十二):sqoop export指令实操_belialxing的博客-CSDN博客

https://blog.csdn.net/d905133872/article/details/129421948?spm=1001.2014.3001.5502

1.将hive中的表数据导入到mysql中

(1)

-- hive创建一张表,默认是textfile类型的

create table if not exists kb23db.export_txt_demo

(

name    string,

address string

);

-- 创建测试数据

insert into kb23db.export_txt_demo values('测试1','上海');

insert into kb23db.export_txt_demo values('测试2','北京');

(2)

-- 创建接收表

create table sql50.export_txt_demo

(

name varchar(10),

address varchar(10)

);

sqoop export --connect 'jdbc:mysql://kb129:3306/sql50' \

--username 'root' \

--password '123456' \

--table 'export_txt_demo' \

--export-dir  /hive312/warehouse/kb23db.db/export_txt_demo \

--input-fields-terminated-by '\001' \

--input-null-string '\\N' \

--input-null-non-string '\\N'

 

参数说明:

--connect '数据库连接' \

--username '数据库账号' \

--password '数据库密码' \

--table '数据库表名' \

--export-dir  集群hdfs中导出的数据目录 \

--input-fields-terminated-by '分隔符,textfile类型默认\001' \

--input-null-string '空值处理:\\N' \

--input-null-non-string '空值处理:\\N'

相关文章:

Hadoop-sqoop

sqoop 1. Sqoop简介及原理 简介: Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysq1.postgresql..)间进行数据的传递,可以将一个关系型数据库(例如: MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop 的HDFS中&…...

[论文阅读]YOLOV1:You Only Look Once:Unified, Real-Time Object Detection

摘要 我们提出了YOLO,一种新的目标检测方法。之前的目标检测工作重新使用分类器来执行检测。相反,我们将目标检测表述为空间分离的边界框和相关类概率的回归问题。单个神经网络在一次评估中直接从完整图像中预测边界框和类别概率。由于整个检测管道是一…...

Ubuntu 20.04 安装MySQL 8.0.34

MySQL安装 sudo wget https://cdn.mysql.com/archives/mysql-8.0/mysql-server_8.0.31-1ubuntu20.04_amd64.deb-bundle.tar下载MySQL文件。 sudo mkdir /mysql8创建目录。 sudo tar -xf mysql-server_8.0.31-1ubuntu20.04_amd64.deb-bundle.tar -C /mysql8进行解压。 需…...

MySQL 高级语句 Part1(进阶查询语句+MySQL数据库函数+连接查询)

高级语句 第一部分 一、MySQL进阶查询语句1.1 select ----显示表格中一个或数个字段的所有数据记录1.2 distinct ----不显示重复的数据记录1.3 where ----有条件查询1.4 and or ----且 或1.5 in----显示已知的值的数据记录1.6 between----显示两个值范围内的数据记录1.7 通配符…...

Rust免杀 Shellcode加载与混淆2

前言 这是半年前我学习Rust和免杀时的一些记录,最近打开知识库看到了这篇半年前的笔记,并且发现我常逛的安全社区都比较少有人分享Rust以及Rust免杀的帖子,于是想着将这篇笔记分享出来供大家参考和指正。由于我写这篇文章时也刚刚开始接触Ru…...

牛客java训练题 day1

9.24 day1 Q 1. this 指针是用来干什么的? 2.基类和派生类分别是指什么? 3.为什么方法中不能写静态变量 4. 解释一下ASCII码和ANSI码和两者的区别 5.简述j ava.io java.sql java.awt java.rmi 分别是什么类型的包 6. 看下面一段代码:…...

接口测试练习步骤

在接触接口测试过程中补了很多课, 终于有点领悟接口测试的根本; 偶是个实用派~,那么现实中没有用的东西,基本上我都不会有很大的概念; 下面给的是接口测试的统一大步骤,其实就是让我们对接口…...

Qt/C++音视频开发56-udp推流和拉流/组播和单播推流

一、前言 之前已经实现了rtsp/rtmp推流,rtsp/rtmp/hls/flv/ws-flv/webrtc等拉流,这种一般都需要依赖一个独立的流媒体服务程序,有没有一种更便捷的方式不需要这种依赖,然后又能实现推拉流呢,当然有的那就是udpp推流&a…...

人工智能轨道交通行业周刊-第61期(2023.9.18-9.24)

本期关键词:焊线机器人、智能综合运维管理系统、信号平面图、铁路部门架构、书生浦语大模型 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通…...

for...in 和 for...of 的区别

for...in 和 for...of 都是 JavaScript 中的循环语句,但它们的作用和使用方式略有不同。 1、for..in 循环 for..in 循环用于遍历对象的可枚举属性,它会将对象的每个属性名称(或键名)作为迭代变量来遍历。 以下是 for...in 的基本语法 for (variable …...

高并发系统 - 接口幂等技术方案,高可用系统架构与技术选型

幂等概念来自于数学,在计算机科学中,幂等表示一次后、或多次请求某一资源,应该有同样的影响效果。 在业务表现上一般是同样的数据效果,下面就常用的业务场景,来聊聊幂等的技术方案。 ----------------- 数据层 ----------------- 索引与事务 根据业务需要,给表添加唯一索…...

简单的手机电脑无线传输方案@固定android生成ftp的IP地址(android@windows)

文章目录 abstractwindows浏览android文件环境准备客户端软件无线网络链接步骤其他方法 手机浏览电脑文件公网局域网everythingpython http.server 高级:固定android设备IP准备检查模块是否生效 windows 访问ftp服务器快捷方式命令行方式双击启动方式普通快捷方式映射新的网络位…...

Unity3D 检测鼠标位置的Sprite像素颜色

思路 获取鼠标所在屏幕坐标(Vector2)通过相机ScreenToWorldPoint(Vector3)转为世界坐标 (注意Vector3的z是距离相机的距离,相机需要正交)通过SpriteRenderer访问边界Bounds通过Bounds.Contain检测世界坐标是否在SpriteBounds内通过比例计算来确定在Sprite内的UV坐标…...

layui input 监听事件

//监听表单单选框复选框选择 form.on(radio, function (data) { console.log(data.value); //得到被选中的值 }); //监听表单下拉菜单选择 form.on(select, function (data) { console.log(data.value); //得到被选中的值 }); //监听表单复选框选择 …...

一致性思维链(SELF-CONSISTENCY IMPROVES CHAIN OF THOUGHT REASONING IN LANGUAGE MODELS)

概要 思维链已经在很多任务上取得了非常显著的效果,这篇论文中提出了一种 self-consistency 的算法,来代替 贪婪解码 算法。本方法通过 采样多个思维链集合,然后LLM模型生成后,选择一个最一致的答案作为最后的结果。一致性思维链…...

腾讯云16核服务器配置大全_16核CPU型号性能测评

腾讯云16核CPU服务器有哪些配置可以选择?可以选择标准型S6、标准型SA3、计算型C6或标准型S5等,目前标准型S5云服务器有优惠活动,性价比高,计算型C6云服务器16核性能更高,轻量16核32G28M带宽优惠价3468元15个月&#xf…...

HTML中Input elements should have autocomplete attributes的解决方案

kwfwservice.php:1 [DOM] Input elements should have autocomplete attributes (suggested: “current-password”): (More info: https://goo.gl/9p2vKq) <input name"password" id"password" lay-verify"required" placeholder"密码&…...

2808. 使循环数组所有元素相等的最少秒数;1015. 可被 K 整除的最小整数;1001. 网格照明

2808. 使循环数组所有元素相等的最少秒数 核心思想&#xff1a;枚举每个元素作为相等元素最多需要多少秒&#xff0c;然后维护它的最小值。最多需要多少秒是怎么计算的&#xff0c;我们可以把相等值的下标拿出来&#xff0c;然后你会发现两个相邻下标&#xff08;相邻下标只的…...

Python爬虫在Web应用自动化测试中的应用

在Web应用开发过程中&#xff0c;自动化测试是确保应用质量和稳定性的重要环节。本文将介绍如何使用Python爬虫与自动化测试技术相结合&#xff0c;实现对Web应用进行自动化测试的方法和步骤。通过这种结合&#xff0c;我们可以提高测试效率、减少人力成本&#xff0c;并确保应…...

苹果手机短信删除了怎么恢复?3种有效方法介绍

手机短信是一种即时通信方式&#xff0c;人们可以使用短信来达到快速传递信息的目的。在没有网络或者网络不稳定的时候&#xff0c;短信仍然可以做到发送和接收&#xff0c;这弥补了其他网络通信软件的缺点。 所以说&#xff0c;手机短信仍然是我们生活中不可缺少的一部分。当…...

前端JavaScript中的 == 和 ===区别,以及他们的应用场景,快来看看吧,积累一点知识。

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 一、等于操作符 二、全等操作符 三、区别 小结 一、等于操作符 等于操作符用两个等于号&#xff08; &am…...

文献阅读:LIMA: Less Is More for Alignment

文献阅读&#xff1a;LIMA: Less Is More for Alignment 1. 内容简介2. 实验设计 1. 整体实验设计2. 数据准备3. 模型准备4. metrics设计 3. 实验结果 1. 基础实验2. 消解实验3. 多轮对话 4. 结论 & 思考 文献链接&#xff1a;https://arxiv.org/abs/2305.11206 1. 内容简…...

机器学习第十四课--神经网络

总结起来&#xff0c;对于深度学习的发展跟以下几点是离不开的: 大量的数据(大数据)计算资源(如GPU)训练方法(如预训练) 很多时候&#xff0c;我们也可以认为真正让深度学习爆发起来的是数据和算力&#xff0c;这并不是没道理的。 由于神经网络是深度学习的基础&#xff0c;学…...

React(react18)中组件通信04——redux入门

React&#xff08;react18&#xff09;中组件通信04——redux入门 1. 前言1.1 React中组件通信的其他方式1.2 介绍redux1.2.1 参考官网1.2.2 redux原理图1.2.3 redux基础介绍1.2.3.1 action1.2.3.2 store1.2.3.3 reducer 1.3 安装redux 2. redux入门例子3. redux入门例子——优…...

最新AI创作系统+ChatGPT网站源码+支持GPT4.0+支持ai绘画+支持国内全AI模型

一、AI创作系统 SparkAi系统是基于很火的GPT提问进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT系统&#xff1f;小编这里写一个详细图文教程吧&#x…...

react+umi项目中引入antd组件报错:“Button”不能用作 JSX 组件解决方案

具体报错信息 “Button”不能用作 JSX 组件。 Its type ‘(props: IProps) > React.ReactElement’ is not a valid JSX element type. 不能将类型“(props: IProps) > React.ReactElement”分配给类型“(props: any, deprecatedLegacyContext?: any) > ReactNode”。…...

常用算法模板

目录 快读、快输 快读、快输 #include <cstdio> #define Re register int #define LD double// 读整数 inline void in(Re &x) {int f 0; x 0; char c getchar();while (c < 0 || c > 9) f | c -, c getchar();while (c > 0 && c < 9) x …...

最全跨境独立站建站详细步骤解析

对于跨境电商卖家来说&#xff0c;无论是规避“鸡蛋放在同一个篮子里”的风险&#xff0c;还是追求更多的销售额和利润&#xff0c;多平台、多站点的布局都是其至关重要的战略。加之市场的变化带来了新的发展机遇&#xff0c;这也使得如今很多出海企业都在抢占独立站新风口。然…...

提升群辉AudioStation音乐体验,实现公网音乐播放

文章目录 本教程解决的问题是&#xff1a;按照本教程方法操作后&#xff0c;达到的效果是本教程使用环境&#xff1a;1 群晖系统安装audiostation套件2 下载移动端app3 内网穿透&#xff0c;映射至公网 很多老铁想在上班路上听点喜欢的歌或者相声解解闷儿&#xff0c;于是打开手…...

虹科分享 | 谷歌Vertex AI平台使用Redis搭建大语言模型

文章来源&#xff1a;虹科云科技 点此阅读原文 基础模型和高性能数据层这两个基本组件始终是创建高效、可扩展语言模型应用的关键&#xff0c;利用Redis搭建大语言模型&#xff0c;能够实现高效可扩展的语义搜索、检索增强生成、LLM 缓存机制、LLM记忆和持久化。有Redis加持的大…...

网站整体结构/深圳网络营销推广培训

文章目录inv穆尔-彭罗斯广义逆pinv对于两个方阵A,BA,BA,B&#xff0c;若ABEABEABE&#xff0c;且EEE为单位阵&#xff0c;则A,BA,BA,B互逆&#xff0c;可记作AB−1,BA−1AB^{-1}, BA^{-1}AB−1,BA−1。 inv 在numpy和scipy中&#xff0c;均提供了求逆函数&#xff0c;分别是n…...

自己可以做英文网站么/深圳百度推广开户

对即将毕业的大学生而言&#xff0c;要面临的是毕业设计、论文答辩&#xff0c;为了能拿到更高的分数并顺利的完成毕业&#xff0c;在进行论文答辩的时候做一份开题报告论文答辩PPT是不错的选择呢。可在制作过程中也有会有存在一些棘手的问题&#xff1a;1、不会做&#xff0c;…...

个人做广播网站需要注意什么/推广发帖网站

1 初始化 //常用初始化方法 var stringVal "hello iFat3"; //构造函数创建方法 var stringObj new String("hello iFag3"); 2 length属性 var stringVal "hello iFat3"; //输出 11 console.log(stringVal.length); 3 charAt() 返回给定位置的…...

网站建设课程设计报告总结/seo排名赚靠谱吗

题目如下&#xff1a; 输入一个整数 n &#xff0c;求1&#xff5e;n这n个整数的十进制表示中1出现的次数。 例如&#xff0c;输入12&#xff0c;1&#xff5e;12这些整数中包含1 的数字有1、10、11和12&#xff0c;1一共出现了5次。 示例 1&#xff1a; 输入&#xff1a;n 1…...

个人网站名称怎么起/适合推广的app有哪些

Flutter的Widget采用的是现代化的React风格&#xff0c;该风格的设计灵感来源于React这么语言。最核心的理念是你可以使用Widget设计界面。Widget通过当前的state和注册信息来描述view应该长成什么样子的。当当前的状态发生了变化后&#xff0c;Widget会重新构建。 一、Hello W…...

企业网站优化找哪家/百度打广告多少钱一个月

解决方案分红两步&#xff1a;php(1)调用unoconv命令将 doc、ppt 转 pdfshell(2)使用 imagemagick将 pdf 转图片windows步骤dom1.安装unoconv测试sudo apt-get install unoconv安装是否成功字体unoconv --version2.安装imagemagickspasudo apt-get install imagemagick是否安装…...