章节内容
上一节我们完成了如下的内容:
编写一个 SQL 脚本生成数据
启动我们的依赖服务:HDFS、Hive、YARN
Sqoop 将数据 全量 导入 Hive
查看MapReduce状态、查看HDFS结果
背景介绍
这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。
之前已经在 VM 虚拟机上搭建过一次,但是没留下笔记,这次趁着前几天薅羊毛的3台机器,赶紧尝试在公网上搭建体验一下。
2C4G 编号 h121
2C4G 编号 h122
2C2G 编号 h123
注意事项
Apache Sqoop 于 2021 年 6 月迁入 Attic。
Apache Sqoop 的使命是创建和维护与 Apache Hadoop 和结构化数据存储相关的大规模数据传输软件。
虽然项目已经可能过时,但是如果你的时间充裕的话,可以适当地学习一下,可能会对你有一定的帮助的!!!
部分导入: --query
执行脚本
sqoop import \ --connect jdbc:mysql://h122.wzk.icu:3306/sqoop \ --username hive \ --password hive@wzk.icu \ --target-dir /root \ --append \ -m 1 \ --fields-terminated-by "\t" \ --query 'select gname, serialNumber, price, stock_number, create_time from goodtbl where price>88 and $CONDITIONS;'
上述参数的解释:
- 查询语句的where中必须包含 ‘$CONDITIONS’
- 如果query后使用双引号 则 $CONDITIONS 前必须加转移符号,防止shell认为是自己的变量
分配任务
可以观察到 Sqoop 开始了 MapReduce 的任务
等待执行
此时任务已经开始分配了 Map -> Reduce
查看结果
可以看到任务执行完毕
部分导入: 指定列
执行脚本
sqoop import \ --connect jdbc:mysql://h122.wzk.icu:3306/sqoop \ --username hive \ --password hive@wzk.icu \ --target-dir /root \ --delete-target-dir \ --num-mappers 1 \ --fields-terminated-by "\t" \ --columns gname,serialNumber,price \ --table goodtbl
上述参数的解释:
- columns中如果涉及到多个列,用逗号分隔,不能添加空格!!!
分配任务
与上述的内容一致,就不放重复的内容了,只截取部分。
部分导入: --where
执行脚本
sqoop import \ --connect jdbc:mysql://h122.wzk.icu:3306/sqoop \ --username hive \ --password hive@wzk.icu \ --target-dir /root \ --delete-target-dir \ -m 1 \ --fields-terminated-by "\t" \ --table goodtbl \ --where "price>=68"
分配任务
与上述一致,内容结果等基本重复,也不放了。