分布式ETL工具Sqoop实践
Mysql数据准备
1、在node02节点登录Mysql。
mysql -uroot -proot
2、新建数据库testdb。
create database testdb;
3、新建数据表ts。
use testdb;
create table ts(id int, name varchar(10), age int, sex char(1));
4、向表中插入数据。
insert into ts values(10001,'张三',18,'m');
insert into ts values(10002,'李四',20,'m');
insert into ts values(10003,'王小姐',18,'w');
Sqoop基本使用
1、查看MySQL中的所有数据库。
sqoop list-databases --connect jdbc:mysql://node02:3306/ --username root --password root
2、在/root目录下新建sqoop_file目录用于存放作业配置文件。
mkdir /root/sqoop
3、在/root/sqoop_file目录编写配置文件list_dbs.conf,减少重复参数配置。
vim list_dbs.conf
# 添加以下内容
list-databases
--connect
jdbc:mysql://node02:3306/
--username
root
--password
root
4、使用配置文件启动sqoop作业。
sqoop --options-file list_dbs.conf
5、查看testdb中所有表,使用非明文方式,手动输入密码。
sqoop list-tables \--connect jdbc:mysql://node02:3306/testdb \--username root \-P
6、在Mysql中执行SQL并将结果展示在控制台。
sqoop eval \--connect jdbc:mysql://node02:3306/testdb \--query "SELECT * FROM ts LIMIT 10" \--username root \-P
7、将testdb.ts表中所有数据全量导入到hdfs的/tmp/sqoop/testdb/ts目录中。
sqoop import \--connect jdbc:mysql://node02:3306/testdb \--username root \--query "select * from ts where \$CONDITIONS" \--target-dir /tmp/sqoop/testdb/ts \--fields-terminated-by "," \--hive-drop-import-delims \--split-by id \-m 1\-P
8、查看最终结果。
hadoop fs -ls /tmp/sqoop/testdb/ts
hadoop fs -cat /tmp/sqoop/testdb/ts/part-m-00000
9、在MySQL中新增一条数据。
insert into ts values(10004,'张飞',28,'m');
9、使用append增量方式将新增数据导入到/tmp/sqoop/testdb/ts/目录中。
sqoop import \--connect jdbc:mysql://node02:3306/testdb \--username root \--password root \--query "select * from ts where \$CONDITIONS" \--target-dir /tmp/sqoop/testdb/ts/ \--split-by id \-m 1 \--incremental append \--check-column id \--last-value 10003
11、查看导入结果。
hadoop fs -ls /tmp/sqoop/testdb/ts
hadoop fs -cat /tmp/sqoop/testdb/ts/part-m-00001
Sqoop Job操作
将sqoop任务编写为sqoop job,能够减少每次作业执行前,进行的参数配置工作。
- 将增量导入任务制作为sqoop job。
sqoop job --create im_ts \-- import \--connect jdbc:mysql://node02:3306/testdb \--username root \--password root \--query "select * from ts where \$CONDITIONS" \--target-dir /tmp/sqoop/testdb/ts/ \--split-by id \-m 1 \--incremental append \--check-column id \--last-value 10004
- 查看所有作业。
sqoop job --list
- 查看指定作业的详细信息。
sqoop job --show im_ts
- 在MySQL中新增数据。
insert into ts values(10005,'赵子龙',27,'m');
- 运行作业,增量导入数据,这里需要手动输入数据库密码,Sqoop job默认不保存。
sqoop job --exec im_ts
- 查看导入结果。
hadoop fs -cat /tmp/sqoop/testdb/ts/part-m-00002
- 再次在MySQL中新增数据。
insert into ts values(10006,'悟空',5000,'m');
- 运行作业,此时不需要手动修改
--last-value,作业会自动根据上次的结果进行更新。
sqoop job --exec im_ts
- 修改$SQOOP_HOME/conf/sqoop-site.xml配置文件,可以使sqoop job自动保存密码。
<property><name>sqoop.metastore.client.record.password</name><value>true</value><description>If true, allow saved passwords in the metastore.</description></property>
相关文章:
分布式ETL工具Sqoop实践
Mysql数据准备 1、在node02节点登录Mysql。 mysql -uroot -proot2、新建数据库testdb。 create database testdb;3、新建数据表ts。 use testdb; create table ts(id int, name varchar(10), age int, sex char(1));4、向表中插入数据。 insert into ts values(10001,张三…...
展会预告 | 图扑邀您共聚 IOTE 国际物联网展·深圳站
参展时间:9 月 20 日- 22 日 图扑展位:9 号馆 9B 35-1 参展地址:深圳国际会展中心(宝安新馆) IOTE 2023 第二十届国际物联网展深圳站,将于 9 月 20 日- 22 日在深圳国际会展中心(宝安…...
如何下载安装 WampServer 并结合 cpolar 内网穿透,轻松实现对本地服务的公网访问
文章目录 前言1.WampServer下载安装2.WampServer启动3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 Wamp 是一个 Windows系统下的 Apache PHP Mysql 集成安装环境,是一组常用来…...
iOS添加Mapbox地图库
配置凭据 注册并导航到Account页面。你将需要: 公共访问令牌: 从帐户的tokens页面,你可以复制默认的公共令牌或单击"create a token"按钮来创建新的公共令牌。 带有Downloads:Read范围的秘密访问令牌: 从你帐户的t…...
destoon根据目录下的html文件生成地图索引
因为项目需要,destoon根据目录下的html文件生成地图索引,操作方法,代码如下: <?php $new_array array(); function loopDir($dir,&$new_array,$modurl) {$handle opendir($dir);header("Content-Type:text/xml&qu…...
gRPC之gRPC流
1、gRPC流 从其名称可以理解,流就是持续不断的传输。有一些业务场景请求或者响应的数据量比较大,不适合使用普通的 RPC 调用通过一次请求-响应处理,一方面是考虑数据量大对请求响应时间的影响,另一方面业务场景的设计不一 定需…...
Kafka Shell命令交互
Kafka提供了一个命令行工具,用于管理和与Kafka集群交互。这个命令行工具通常称为Kafka Shell,它允许您执行各种操作,如创建主题、发送和消费消息、查看主题列表等。 以下是一些常用的Kafka Shell命令: 创建主题(Topic): kafka-topics.sh --create --topic my-topic --pa…...
什么是回归测试?
什么是回归测试? 回归测试被定义为一种软件测试类型,以确认最近的程序或代码更改未对现有功能产生不利影响。 回归测试只不过是全部或部分选择已执行的测试用例,然后重新执行以确保现有功能正常运行。 进行此测试是为了确保新代码更改不会…...
ZTMap是如何在相关政策引导下让建筑更加智慧化的?
近几年随着智慧楼宇概念的深入,尤其是在“十四五规划”“新基建”“数字经济”等相关战略和政策的引导下,智慧楼宇也迎来了快速发展期,对推动智慧城市系统的建设越来越重要。那么究竟什么是智慧楼宇呢?智慧楼宇其实就是整合楼宇内…...
Python:函数和代码复用
嗨喽,大家好呀~这里是爱看美女的茜茜呐 👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~ python源码、视频教程、插件安装教程、资料我都准备好了,直接在文末名片自取就可 1、关于递归函…...
three.js——模型对象的使用材质和方法
模型对象的使用材质和方法 前言效果图1、旋转、缩放、平移,居中的使用1.1 旋转rotation(.rotateX()、.rotateY()、.rotateZ())1.2缩放.scale()1.3平移.translate()1.4居中.center() 2、材质属性.wireframe 前言 BufferGeometry通过.scale()、…...
sql explain
目录 1. sql explain每个字段对应的含义1.1. id1.2. select_type1.3. table1.4. partitions1.5. type1.6. possible_keys1.7. key1.8. key_len1.9. ref1.10. rows1.11. Extra 索引实践联合索引最左列原则全值匹配不建议在索引列上做任何操作, 否则索引会失效转而全表扫描尽量使…...
【LeetCode-简单题】剑指 Offer 05. 替换空格
文章目录 题目方法一:常规做法:方法二:双指针做法 题目 方法一:常规做法: class Solution {public String replaceSpace(String s) {int len s.length() ;StringBuffer str new StringBuffer();for(int i 0 ; i &l…...
数字虚拟人制作简明指南
如何在线创建虚拟人? 虚拟人,也称为数字化身、虚拟助理或虚拟代理,是一种可以通过各种在线平台与用户进行逼真交互的人工智能人。 在线创建虚拟人变得越来越流行,因为它为个人和企业带来了许多好处。 推荐:用 NSDT编辑…...
Nginx 文件解析漏洞复现
一、漏洞说明 Nginx文件解析漏洞算是一个比较经典的漏洞,接下来我们就通过如下步骤进行漏洞复现,以及进行漏洞的修复。 版本条件:IIS 7.0/IIS 7.5/ Nginx <8.03 二、搭建环境 cd /vulhub/nginx/nginx_parsing_vulnerability docker-compos…...
Lombok依赖
一.介绍 Project Lombok 是一个 Java 库,它会自动插入编辑器和构建工具,为您的 Java 增添趣味。永远不要再写另一个 getter 或 equals 方法,使用一个注释,您的类有一个功能齐全的构建器,自动化您的日志记录变量等等。…...
XML 和 JSON 学习笔记(基础)
XML Why XML 的出现背景:在实际开发中,不同语言(如Java、JavaScript等)的应用程序之间数据传递的格式不同,导致它们进行数据交换时很困难,XML就应运而生了!(XML 是一种通用的数据交…...
L1-005 考试座位号分数 15
每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试…...
无涯教程-JavaScript - CEILING.MATH函数
描述 CEILING.MATH函数将数字四舍五入到最接近的整数或最接近的有效倍数。 Excel CEILING.MATH函数是Excel中的十五个舍入函数之一。 语法 CEILING.MATH (number, [significance], [mode])争论 Argument描述Required/OptionalNumberNumber must be less than 9.99E307 and …...
ChatGPT提示词(prompt)资源汇总
文章目录 awesome-chatgpt-promptsLearn PromptingSnack PromptFlow GPTPrompt VineChatGPT 指令大全AI Toolbox HubAI Short ChatGPT是一种强大的生成式AI模型,而提示词(prompt)则是与ChatGPT一起使用的指导性文本,用于引导模型生…...
别啃书了!用这款70块的Steam游戏《Turing Complete》,手把手带你从逻辑门拼出CPU
从逻辑门到CPU:用《Turing Complete》重构计算机组成原理学习体验 当我在大学第一次翻开《计算机组成原理》教材时,那些密密麻麻的逻辑门符号和抽象的数据通路图让我头皮发麻。直到在Steam上发现标价70元的《Turing Complete》——这款看似简单的电路模拟…...
出海营销决战指南:从“流量过客”到“私域常客”的全局地图
2026 全球出海营销日历:如何在关键节点实现社媒私域流量的指数级增长?2026年,出海战场规则已变。粗放投放的红利耗尽,碎片化的渠道、敏感的风控与难以逾越的文化沟壑,正让每一分营销预算的效能急剧衰减。节点依旧汹涌&…...
OpenSpec 生成文件说明
proposal.md —— 为什么做、做什么(产品/范围) Why:要解决什么问题、机会是什么。What Changes:会新增/改掉/删掉哪些能力,有没有 BREAKING。Capabilities:会动到哪些能力名(对应后面 specs/&l…...
ssm+java2026年毕设司库管理系统【源码+论文】
本系统(程序源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、选题背景关于企业理财与融资管理问题的研究,现有研究主要以大型企业ERP系统或通用财务管理软件为主,专门针对中…...
GIS开发必备:5分钟搞定EPSG3857转WGS84坐标转换(附proj4.js完整代码)
GIS开发实战:从原理到代码实现EPSG3857与WGS84的高效坐标转换 刚接触WebGIS开发的工程师们,常常会被各种坐标系搞得晕头转向。为什么高德地图上显示的位置和GPS设备采集的数据对不上?为什么Leaflet、OpenLayers这些库加载的瓦片地图坐标数值大…...
SQLite.Interop.DLL加载失败的3种修复方案 - 从运行库到项目配置全搞定
SQLite.Interop.DLL加载失败的终极解决方案:从运行环境到项目配置深度解析 当你正在开发一个依赖SQLite数据库的C#项目时,突然遇到"无法加载DLLSQLite.Interop.DLL"的错误提示,这绝对是一个令人头疼的问题。作为一名有多年.NET开发…...
经典概率题:飞机座位分配问题(LeetCode 1227)超详细解析
一、题目背景与描述这是一道非常经典的概率与逻辑推理面试题,也是 LeetCode 第 1227 题「飞机座位分配概率」。题目描述有 n 位乘客即将登机,飞机正好有 n 个座位。第一位乘客的票丢了,他随机选一个座位坐下。剩下的乘客:如果自己…...
别再只盯着KNN了:聊聊Wi-Fi指纹定位中那些被低估的匹配算法与实战选择
超越KNN:Wi-Fi指纹定位中的高阶匹配算法与工程化选型指南 商场里找不到心仪店铺的焦虑、仓库中耗时的手动货品盘点、医院里紧急设备定位的延迟——这些场景背后都指向同一个技术痛点:室内定位精度不足。当大多数开发者习惯性采用KNN算法时,我…...
SpringBoot3 + JetCache实战:如何用两级缓存把接口性能提升10倍?
SpringBoot3 JetCache实战:高并发场景下的缓存架构设计与性能优化 在电商秒杀、实时数据查询等高并发场景中,传统数据库直接承受流量冲击往往会导致系统崩溃。去年双十一期间,某头部电商平台通过多级缓存架构成功扛住了每秒百万级的查询请求…...
Milvus向量数据库Docker安装避坑指南:从配置到可视化工具Attu的完整流程
Milvus向量数据库Docker安装避坑指南:从配置到可视化工具Attu的完整流程 当开发者第一次接触向量数据库时,往往会遇到各种意想不到的"坑"。作为一款开源的向量数据库,Milvus因其高性能和易用性而广受欢迎,但在Docker环境…...
