SQOOP主要用于将数据从 MySQL、Oracle 等关系型数据库传输到 Hadoop HDFS(Hadoop File System)等数据仓库。因此,当数据从关系数据库传输到 HDFS 时,我们说我们正在导入数据。否则,当我们将数据从 HDFS 传输到关系数据库时,我们说我们正在导出数据。
注意:要导入或导出,MySQL 和Hive的列顺序应该相同。
将数据从 MySQL 导入 HDFS
为了将数据存储到 HDFS 中,我们使用了 Apache Hive ,它在用户和集成了 Hadoop 的 Hadoop 分布式文件系统 (HDFS) 之间提供了一个类似 SQL 的接口。我们执行以下步骤:
第一步:登录MySQL
mysql -u root -pcloudera
第二步:创建数据库和表并插入数据。
create database geeksforgeeeks;
create table geeksforgeeeks.geeksforgeeks(author_name varchar(65), total_no_of_articles int, phone_no int, address varchar(65));
insert into geeksforgeeks values(“Rohan”,10,123456789,”Lucknow”);
第 3 步:在应导入数据的 hive 中创建数据库和表。
create table geeks_hive_table(name string, total_articles int, phone_no int, address string) row format delimited fields terminated by ‘,’;
第 4 步:在 Hadoop 上运行下面的导入命令。
sqoop import --connect \
jdbc:mysql://127.0.0.1:3306/database_name_in_mysql \
--username root --password cloudera \
--table table_name_in_mysql \
--hive-import --hive-table database_name_in_hive.table_name_in_hive \
--m 1
在上面的代码中,需要注意以下几点。
- 127.0.0.1是本地主机 IP 地址。
- 3306是 MySQL 的端口号。
- m是映射器的数量
第五步:数据导入成功与否,签入hive。
将数据从 HDFS 导出到 MySQL
要将数据从 HDFS 导出到 MySQL,请执行以下步骤:
第一步:在hive中创建数据库和表。
create table hive_table_export(name string,company string, phone int, age int) row format delimited fields terminated by ‘,’;
第二步:向hive表中插入数据。
insert into hive_table_export values("Ritik","Amazon",234567891,35);
步骤3:在MySQL中创建一个数据库和表,数据应该导出到其中。
第 4 步:在 Hadoop 上运行以下命令。
sqoop export --connect \
jdbc:mysql://127.0.0.1:3306/database_name_in_mysql \
--table table_name_in_mysql \
--username root --password cloudera \
--export-dir /user/hive/warehouse/hive_database_name.db/table_name_in_hive \
--m 1 \
-- driver com.mysql.jdbc.Driver
--input-fields-terminated-by ','
在上面的代码中,需要注意以下几点。
- 127.0.0.1是本地主机 IP 地址。
- 3306是 MySQL 的端口号。
- 在导出数据的情况下,应指定表的整个路径
- m是映射器的数量
第五步:数据导出成功与否,检查MySQL。