大数据Sqoop系列之Sqoop导入导出数据
程序员文章站
2022-04-19 17:37:13
...
一、Sqoop介绍
- Sqoop是一个用来将关系型数据库和Hadoop中的数据进行相互转移的工具,可以将一个关系型数据库(例如Mysql、Oracle)中的数据导入到Hadoop(例如HDFS、Hive、Hbase)中,也可以将Hadoop(例如HDFS、Hive、Hbase)中的数据导入到关系型数据库(例如Mysql、Oracle)中。
- Sqoop工具接收到客户端的shell命令或者Java api命令后,通过Sqoop中的任务翻译器(Task Translator)将命令转换为对应的MapReduce任务,而后将关系型数据库和Hadoop中的数据进行相互转移,进而完成数据的拷贝。
二、导入数据
1、参数说明
## 链接MySQL数据库url
--connect jdbc:mysql://127.0.0.1:3306/test_db
## 链接MySQL数据库用户名
--username root
## 链接MySQL数据库密码
--password 123456
## 链接MySQL数据库中的表
--table tb1
## 设置map的个数
--num-mappers 1
## 设置导入到hdfs文件所在的位置
--target-dir /datas/sqoop/input
## 设置导入到hdfs文件前先删除已经存在的目录
--delete-target-dir
## 设置导入到hdfs文件的分隔符
--fields-teminated-by ','
## 设置增量导入到hdfs上的检查列
--check-column id
## 设置增量导入到hdfs上的追加方式
--incremental append
## 设置增量导入到hdfs上的开始位置
--last-value 4
## 设置增量导入到hdfs上的文件存储格式
--as-parquetfile
## 指定hive中的数据库
--hive-database test_db
## 设置操作类型
--hive-import
## 指定hive中的表
--hive-table tb1
## 备注:delete-target-dir和incremental append不能同时使用
2、Sqoop获取MySQL的所有数据库
sqoop list-databases \
--connect jdbc:mysql://127.0.0.1:3306 \
--username root \
--password 123456;
3、Sqoop从MySQL导入数据到HDFS
sqoop import \
--connect jdbc:mysql://127.0.0.1:3306/test_db \
--username root \
--password 123456 \
--table tb1 \
--num-mappers 1 \
--target-dir /datas/sqoop/input \
--delete-target-dir;
4、Sqoop从MySQL导入数据到Hive
sqoop import \
--connect jdbc:mysql://127.0.0.1:3306/test \
--username root \
--password 123456 \
--table tb1 \
--num-mappers 1 \
--fields-terminated-by ',' \
--delete-target-dir \
--hive-database test \
--hive-import \
--hive-table tb1;
三、导出数据
1、参数说明
## 链接MySQL数据库url
--connect jdbc:mysql://127.0.0.1:3306/test_db
## 链接MySQL数据库用户名
--username root
## 链接MySQL数据库密码
--password 123456
## 链接MySQL数据库中的表
--table tb1
## 设置map的个数
--num-mappers 1
## 设置hdfs文件导出的分隔符
--fields-terminated-by ','
## 设置hdfs文件所在的位置
--export-dir /user/hive/warehouse/test_db.db/tb1
2、Sqoop从Hive导出数据到MySQL
sqoop export \
--connect jdbc:mysql://127.0.0.1:3306/test_db \
--username root \
--password 123456 \
--table tb1 \
--num-mappers 1 \
--fields-terminated-by ',' \
--export-dir /user/hive/warehouse/test_db.db/tb1;
推荐阅读
-
Python之csv文件从MySQL数据库导入导出的方法
-
SQOOP导出SQLSERVER中数据的方法教程
-
sqoop导入MySQL数据出现Call From hadoop/172.16.59.90 to hadoop:10020 failed on connecti
-
MySQL数据库导入导出数据之报错解答实例讲解
-
解决sqoop import 导入到hive后数据量变多的问题
-
sqoop读取postgresql数据库表格导入到hdfs中的实现
-
带你从零学大数据系列之Java篇---第七章:面向对象三大特性
-
Oracle之dmp导入/导出、数据库操作等过程中的字符集问题
-
使用pyspark模仿sqoop从oracle导数据到hive的主要功能(自动建表,分区导入,增量,解决数据换行符问题)
-
Sqoop如何将SqlServer数据导入HDF?