📜  使用 SQOOP 导入和导出数据

📅  最后修改于: 2021-10-27 06:47:37             🧑  作者: Mango

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
登录到 MySQL

登录到 MySQL

第二步:创建数据库和表并插入数据。

创建数据库

数据库名称:geeksforgeeks 和表名称:geeksforgeeks

第 3 步:在应导入数据的 hive 中创建数据库和表。

在hive中创建数据库和表

Hive数据库:geeks_hive 和Hive表:geeks_hive_table

第 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 
Hadoop 上的导入命令

导入数据的 SQOOP 命令

在上面的代码中,需要注意以下几点。

  • 127.0.0.1是本地主机 IP 地址。
  • 3306是 MySQL 的端口号。
  • m是映射器的数量

第五步:数据导入成功与否,签入hive。

数据成功导入hive。

将数据从 HDFS 导出到 MySQL

要将数据从 HDFS 导出到 MySQL,请执行以下步骤:

第一步:在hive中创建数据库和表。

Hive数据库:hive_export 和Hive表:hive_table_export

第二步:向hive表中插入数据。

insert into hive_table_export values("Ritik","Amazon",234567891,35);

Hive表中的数据

步骤3:在MySQL中创建一个数据库和表,数据应该导出到其中。

MySQL 数据库:mysql_export 和 MySQL 表:mysql_table_export

第 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 ','

导出数据的 SQOOP 命令

在上面的代码中,需要注意以下几点。

  • 127.0.0.1是本地主机 IP 地址。
  • 3306是 MySQL 的端口号。
  • 在导出数据的情况下,应指定表的整个路径
  • m是映射器的数量

第五步:数据导出成功与否,检查MySQL。

数据成功导出到MySQL