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

Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce

章节内容

上节我们完成了:

  • Sqoop 介绍
  • Sqoop 下载配置环境等
  • Sqoop 环境依赖:Hadoop、Hive、JDBC 等环境补全

背景介绍

这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。
之前已经在 VM 虚拟机上搭建过一次,但是没留下笔记,这次趁着前几天薅羊毛的3台机器,赶紧尝试在公网上搭建体验一下。

  • 2C4G 编号 h121
  • 2C4G 编号 h122
  • 2C2G 编号 h123

在这里插入图片描述

注意事项

Apache Sqoop 于 2021 年 6 月迁入 Attic。
Apache Sqoop 的使命是创建和维护与 Apache Hadoop 和结构化数据存储相关的大规模数据传输软件。
虽然项目已经可能过时,但是如果你的时间充裕的话,可以适当地学习一下,可能会对你有一定的帮助的!!!

生成数据

创建新库

连接我们的MySQL数据库,执行如下的SQL,生成一些数据出来:

-- 用于在 Mysql 中生成测试数据
CREATE DATABASE sqoop;
use sqoop;
CREATE TABLE sqoop.goodtbl(gname varchar(50),serialNumber int,price int,stock_number int,create_time date
);

在这里插入图片描述

移除函数

防止遇到干扰,先移除之前可能存在的函数:

DROP FUNCTION IF EXISTS `rand_string`;
DROP PROCEDURE IF EXISTS `batchInsertTestData`;

在这里插入图片描述

编写脚本


-- 替换语句默认的执行符号,将;替换成 //
DELIMITER //
CREATE FUNCTION `rand_string` (n INT) RETURNS VARCHAR(255)
CHARSET 'utf8'
BEGINDECLARE char_str varchar(200) DEFAULT'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';DECLARE return_str varchar(255) DEFAULT '';DECLARE i INT DEFAULT 0;WHILE i < n DOSET return_str = concat(return_str,substring(char_str, FLOOR(1 + RAND()*36), 1));SET i = i+1;END WHILE;RETURN return_str;
END
//
CREATE PROCEDURE `batchInsertTestData` (m INT, n INT)
BEGIN
DECLARE i INT DEFAULT 0;WHILE i < n DOinsert into goodtbl (gname, serialNumber, price,stock_number, create_time)values (rand_string(6), i+m, ROUND(RAND()*100),FLOOR(RAND()*100), now());SET i = i+1;END WHILE;
END
//
delimiter ;
call batchInsertTestData(1, 100);

执行脚本

运行脚本后:
在这里插入图片描述

查看数据

使用 SQL 查看,或者可视化查看,如下图:
在这里插入图片描述

依赖服务

请确保以下的服务都是正常运行的:

  • HDFS
  • YARN
  • MySQL

MySQL->HDFS 全量导入

运行脚本

sqoop import \
--connect jdbc:mysql://h122.wzk.icu:3306/sqoop \
--username hive \
--password hive@wzk.icu \
--table goodtbl \
--target-dir /root \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t"

参数解释

上述参数的解释:

  • target-dir 将数据导入HDFS的路径
  • delete-target-dir 如果目标文件夹在HDFS上已经存在,那么再次运行就会报错。
  • num-mappers 启动多少个MapTask,默认启动4个
  • fields-terminated-by HDFS中数据的分隔符

分配任务

观察任务的分配过程
在这里插入图片描述

等待执行

可以观察到 Map -> Reduce 的过程
在这里插入图片描述
需要等待好一段时间,执行完成后效果如下图:
在这里插入图片描述

查看结果

到 HDFS 集群中查看数据,发现数据已经导入了:
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 安全及应用(更新)
  • 深入理解MySQL中的EXPLAIN及type列
  • 华为HCIP Datacom H12-821 卷34
  • 近期勒索软件趋势统计及未来发展预测
  • 600Kg大载重起飞重量多旋翼无人机技术详解
  • Effective C++笔记之二十一:One Definition Rule(ODR)
  • Vue3项目如何使用npm link本地测试组件库
  • 一、Prometheus和Grafana搭建
  • 区块链技术如何改变供应链管理?
  • 代理详解之静态代理、动态代理、SpringAOP实现
  • 新手前端系列入门-什么是前端开发
  • DEJA_VU3D - Cesium功能集 之 122-体元渲染(官方Voxels)
  • 如何拥有自己的第一个私人数据库?
  • Kubernetes k8s Pod容器 探针 健康探测
  • 46、lvs集群- 博客
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • Linux gpio口使用方法
  • Markdown 语法简单说明
  • mockjs让前端开发独立于后端
  • vue-cli在webpack的配置文件探究
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 技术发展面试
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 项目实战-Api的解决方案
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #《AI中文版》V3 第 1 章 概述
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • (Charles)如何抓取手机http的报文
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (WSI分类)WSI分类文献小综述 2024
  • (二)丶RabbitMQ的六大核心
  • (分布式缓存)Redis哨兵
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (三)mysql_MYSQL(三)
  • (数据大屏)(Hadoop)基于SSM框架的学院校友管理系统的设计与实现+文档
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (贪心 + 双指针) LeetCode 455. 分发饼干
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET Core 项目指定SDK版本
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET 中的轻量级线程安全
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .net实现客户区延伸至至非客户区
  • .Net语言中的StringBuilder:入门到精通
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • @EnableWebMvc介绍和使用详细demo
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [2015][note]基于薄向列液晶层的可调谐THz fishnet超材料快速开关——
  • [Android 数据通信] android cmwap接入点
  • [C#]OpenCvSharp 实现Bitmap和Mat的格式相互转换