【提示】点击每一关参考答案可以快速复制。

目录

第1关:Sqoop数据导出语法学习

任务描述

相关知识

编程要求

测试说明

参考答案

第2关:HDFS数据导出至Mysql内

任务描述

相关知识

编程要求

测试说明

参考答案

第3关:Hive数据导出至MySQL中

任务描述

相关知识

编程要求

测试说明

参考答案

第1关:Sqoop数据导出语法学习

任务描述

本关任务:学习Sqoop 导出( export )的基本语法并配置好环境。

相关知识

为了完成本关任务,你需要掌握: 1、Sqoop 导出( export )的基本参数。 2、配置环境。

Sqoop 导出( export )的基本参数。

Sqoop 能够让 Hadoop 上的 HDFS 和 Hive 跟关系型数据库之间进行数据导入与导出,多亏了import和export这两个工具。本实训主要是针对export(导出)来讲。 数据在Hadoop平台上进行处理后,我们可能需要将结果同步到关系数据库中作为业务的辅助数据,这时候需要将Hadoop平台分析后的数据导出(export)到关系数据库。 我们要学 Sqoop 的导出也必须先知道里面的基本语法。 输入sqoop help export可以查看里面参数含义,导出和导入基本参数都差不多,接下来选取几个常见的参数来分析:

选项含义说明--connect 指定JDBC连接字符串--driver 指定要使用的JDBC驱动程序类--hadoop-mapred-home 

指定$HADOOP_MAPRED_HOME路径-P从控制台读取输入的密码--username 设置认证用户名--password 设置认证密码--verbose打印详细的运行信息--columns 要导出到表格的列--direct使用直接导入模式(优化导入速度--export-dir 用于导出的HDFS源路径--num-mappers (简写:-m)使用n个mapper任务并行导出--table 要填充的表--staging-table 数据在插入目标表之前将在其中展开的表格。--clear-staging-table表示可以删除登台表中的任何数据--batch使用批量模式导出--fields-terminated-by 设置字段分隔符--lines-terminated-by 设置行尾字符--optionally-enclosed-by 设置字段包含字符

配置环境

注意:如果这个环境不配置的话,可能会造成后续关卡不能正常实现。 1、启动Hadoop。

start-all.sh

2、Hive连接 MySQL 初始化。

schematool -dbType mysql -initSchema

编程要求

在右侧命令行进行操作: 1.启动Hadoop服务; 2.Hive 连接 MySQL 初始化。

测试说明

完成操作后点击评测,通关后测试集输出:

Hadoop平台已开启

default

参考答案

#命令行

#启动Hadoop

start-all.sh

#Hive连接 MySQL 初始化

schematool -dbType mysql -initSchema

第2关:HDFS数据导出至Mysql内

任务描述

本关任务:利用 Sqoop 工具将 HDFS 中的数据导出至 MySQL 中来。

相关知识

为了完成本关任务,你需要掌握: 1、数据库( MySQL )建表。 2、HDFS 数据导出至 MySQL 中。

数据库( MySQL )建表

因为这边 Sqoop 不能够帮关系型数据库创建表,所以需要我们自己来创建表。 用命令进入 MySQL 客户端。

mysql -uroot -p123123 -h127.0.0.1

创建数据库hdfsdb(格式默认为utf8),并在数据库内建立表fruit,其表结构如下:

名类状态fru_noint主键fru_namevarchar(20)fru_priceintfru_addressvarchar(20)

HDFS 数据导出至 MySQL 中

将数据放入 HDFS 上 输入vi text.txt,内容如下:

01,apple,6,changsha

02,banana,4,shanghai

03,orange,2,guangzhou

将文件上传HDFS

hadoop fs -put text.txt /user

HDFS 数据导出至 MySQL中 。

sqoop export --connect jdbc:mysql://127.0.0.1:3306/hdfsdb --username root --password 123123 --table fruit --export-dir /user/text.txt -m 1

查看 Mysql 中的表,发现数据已经传输过去了。

编程要求

根据上述,成功用 Sqoop 将 HDFS 上的数据导出 MySQL 成功。

测试说明

点击测评,当你的结果与预期输出一致时,即为通过。

HDFS存在text.txt文件

传输成功!

参考答案

#命令行

#进入MySQL

mysql -uroot -p123123 -h127.0.0.1

#以下为MySQL

#创建数据库hdfsdb

create database `hdfsdb`;

#切换数据库hdfsdb

use `hdfsdb`;

#创建数据表fruit

create table `fruit`(

fru_no int primary key,

fru_name varchar(20),

fru_price int,

fru_address varchar(20)

);

quit;

#命令行

#编辑text文本文件

vi text.txt

#以下为在vi编辑器中需要输入的内容。

#使用提示:【i】键进入插入模式,鼠标滚轮可以快速上下滑动光标,执行对应插入操作,最后【Esc】键退出vi插入模式,输入“:wq”保存并退出vi编辑器。

#使用提示:PageUp(PgUp)、PageDown(PgDn)键快速定位光标到文件开始位置和结束位置,Home、End键快速定位光标到当前行的行首和行末。

01,apple,6,changsha

02,banana,4,shanghai

03,orange,2,guangzhou

#命令行

#将文件上传HDFS

hadoop fs -put text.txt /user

#HDFS 数据导出至 MySQL中

sqoop export --connect jdbc:mysql://127.0.0.1:3306/hdfsdb --username root --password 123123 --table fruit --export-dir /user/text.txt -m 1

#查看MySQL数据

mysql -uroot -p123123 -h127.0.0.1

#以下为MySQL

#查看 Mysql 中的表,发现数据已经传输过去了

use hdfsdb;

select * from `fruit`;

quit;

第3关:Hive数据导出至MySQL中

任务描述

本关任务:利用 Sqoop 工具将 Hive 中的数据导出至 MySQL 中。

相关知识

为了完成本关任务,你需要掌握:Hive 数据导出至 MySQL 中。

Hive 数据导入 MySQL 中

MySQL建表

因为之前已经创建过数据库了,我们直接使用之前的数据库hdfsdb,在数据库中建表project,表结构如下:

名类状态pro_noint主键,序号pro_namevarchar(20)课程名pro_teachervarchar(20)课程老师

# 首先进入MySQL

mysql -uroot -p123123 -h127.0.0.1

# 进入MySQL后使用数据库 hdfsdb

use hdfsdb;

# 创建表 project

create table project(pro_no int,pro_name varchar(20),pro_teacher varchar(20), primary key (pro_no));

Hive中建表添加数据

新建并编辑文本project.txt,添加以下内容:

01,bigdata,wang

02,javaweb,yang

03,python,xiang

输入pwd,获取当前路径。

进入Hive,在Hive内创建表project。

create table project (pro_no int,pro_name string, pro_teacher string) row format delimited fields terminated by ',' stored as textfile;

在表中插入刚刚创建的数据,位置为刚刚路径下的project.txt。

load data local inpath './project.txt' into table project;

查看是否添加成功。

Hive 数据导出至 MySQL。

sqoop export --connect jdbc:mysql://127.0.0.1:3306/hdfsdb --username root --password 123123 --table project --export-dir /opt/hive/warehouse/project -m 1 --input-fields-terminated-by ','

我们查看 MySQL 中,发现数据已经传输过去了。

编程要求

根据上述,将Hive表中数据导出到mysql中。

测试说明

点击测评,当你的结果与预期输出一致时,即为通过。

hive建表成功

传输成功!

参考答案

#命令行

#进入mysql

mysql -uroot -p123123 -h127.0.0.1

#以下为MySQL

#切换数据库

use hdfsdb;

#创建表 project

create table project(pro_no int,pro_name varchar(20),pro_teacher varchar(20), primary key (pro_no));

quit;

#命令行

#新建并编辑文本project.txt

vi project.txt

#以下为在vi编辑器中需要输入的内容。

#使用提示:【i】键进入插入模式,鼠标滚轮可以快速上下滑动光标,执行对应插入操作,最后【Esc】键退出vi插入模式,输入“:wq”保存并退出vi编辑器。

#使用提示:PageUp(PgUp)、PageDown(PgDn)键快速定位光标到文件开始位置和结束位置,Home、End键快速定位光标到当前行的行首和行末。

01,bigdata,wang

02,javaweb,yang

03,python,xiang

#命令行

#输入pwd,获取当前路径

pwd

#进入Hive,在Hive内创建表project

hive

--以下为Hive

--创建表project

create table project (pro_no int,pro_name string, pro_teacher string) row format delimited fields terminated by ',' stored as textfile;

--在表中插入刚刚创建的数据,位置为刚刚路径下的project.txt

load data local inpath './project.txt' into table project;

--查看是否添加成功

select * from project;

quit;

#命令行

#Hive 数据导出至 MySQL

sqoop export --connect jdbc:mysql://127.0.0.1:3306/hdfsdb --username root --password 123123 --table project --export-dir /opt/hive/warehouse/project -m 1 --input-fields-terminated-by ','

至此,所有内容都完成辣。如果存在任何问题欢迎大佬指教殺!

精彩链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: