Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL天生数据 HDFS集群 Sqoop impor ...

打印 上一主题 下一主题

主题 570|帖子 570|积分 1712

章节内容

上节我们完成了:


  • 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,天生一些数据出来:
  1. -- 用于在 Mysql 中生成测试数据
  2. CREATE DATABASE sqoop;
  3. use sqoop;
  4. CREATE TABLE sqoop.goodtbl(
  5.   gname varchar(50),
  6.   serialNumber int,
  7.   price int,
  8.   stock_number int,
  9.   create_time date
  10. );
复制代码

移除函数

防止遇到干扰,先移除之前大概存在的函数:
  1. DROP FUNCTION IF EXISTS `rand_string`;
  2. DROP PROCEDURE IF EXISTS `batchInsertTestData`;
复制代码

编写脚本

  1. -- 替换语句默认的执行符号,将;替换成 //
  2. DELIMITER //
  3. CREATE FUNCTION `rand_string` (n INT) RETURNS VARCHAR(255)
  4. CHARSET 'utf8'
  5. BEGIN
  6.   DECLARE char_str varchar(200) DEFAULT
  7.   '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  8.   DECLARE return_str varchar(255) DEFAULT '';
  9.   DECLARE i INT DEFAULT 0;
  10.   WHILE i < n DO
  11.     SET return_str = concat(return_str,
  12.     substring(char_str, FLOOR(1 + RAND()*36), 1));
  13.     SET i = i+1;
  14.   END WHILE;
  15.   RETURN return_str;
  16. END
  17. //
  18. CREATE PROCEDURE `batchInsertTestData` (m INT, n INT)
  19. BEGIN
  20. DECLARE i INT DEFAULT 0;
  21.   WHILE i < n DO
  22.     insert into goodtbl (gname, serialNumber, price,
  23.     stock_number, create_time)
  24.     values (rand_string(6), i+m, ROUND(RAND()*100),
  25.     FLOOR(RAND()*100), now());
  26.     SET i = i+1;
  27.   END WHILE;
  28. END
  29. //
  30. delimiter ;
  31. call batchInsertTestData(1, 100);
复制代码
执行脚本

运行脚本后:

检察数据

使用 SQL 检察,或者可视化检察,如下图:

依靠服务

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


  • HDFS
  • YARN
  • MySQL
MySQL->HDFS 全量导入

运行脚本

  1. sqoop import \
  2. --connect jdbc:mysql://h122.wzk.icu:3306/sqoop \
  3. --username hive \
  4. --password hive@wzk.icu \
  5. --table goodtbl \
  6. --target-dir /root \
  7. --delete-target-dir \
  8. --num-mappers 1 \
  9. --fields-terminated-by "\t"
复制代码
参数解释

上述参数的解释:


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

观察任务的分配过程

等待执行

可以观察到 Map -> Reduce 的过程

需要等待好一段时间,执行完成后结果如下图:

检察结果

到 HDFS 集群中检察数据,发现数据已经导入了:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

刘俊凯

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表