欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

大数据Sqoop系列之Sqoop导入导出数据

程序员文章站 2022-04-19 17:37:13
...

一、Sqoop介绍

  • Sqoop是一个用来将关系型数据库和Hadoop中的数据进行相互转移的工具,可以将一个关系型数据库(例如Mysql、Oracle)中的数据导入到Hadoop(例如HDFS、Hive、Hbase)中,也可以将Hadoop(例如HDFS、Hive、Hbase)中的数据导入到关系型数据库(例如Mysql、Oracle)中。

大数据Sqoop系列之Sqoop导入导出数据

  • Sqoop工具接收到客户端的shell命令或者Java api命令后,通过Sqoop中的任务翻译器(Task Translator)将命令转换为对应的MapReduce任务,而后将关系型数据库和Hadoop中的数据进行相互转移,进而完成数据的拷贝。

大数据Sqoop系列之Sqoop导入导出数据

二、导入数据 

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;
相关标签: sqoop