我是靠谱客的博主 贪玩火龙果,最近开发中收集的这篇文章主要介绍Sqoop数据传输Sqoop简介一、RDBMS => HDFS二、RDBMS => Hive三、RDBMS => Hbase四、HDFS/Hive => RDBMS五、Hive => HDFS六、HDFS => Hive,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
文章目录
- Sqoop简介
- 一、RDBMS => HDFS
- 二、RDBMS => Hive
- 三、RDBMS => Hbase
- 四、HDFS/Hive => RDBMS
- 五、Hive => HDFS
- 六、HDFS => Hive
Sqoop简介
Apache Sqoop(SQL-to-Hadoop)项目旨在协助RDBMS与Hadoop之间进行高效的大数据交流。用户可以通过 Sqoop 轻松地把关系型数据库的数据导入到 Hadoop 及其相关的系统 (如HBase和Hive)中;同时也可以把数据从 Hadoop 系统里抽取并导出到关系型数据库里。
Sqoop是一个在结构化数据和Hadoop之间进行批量数据迁移的工具,结构化数据可以是MySQL、Oracle等RDBMS。Sqoop底层用MapReduce程序实现抽取、转换、加载,MapReduce天生的特性保证了并行化和高容错率。
一、RDBMS => HDFS
sqoop import
--connect jdbc:mysql://single:3306/mysqltest
--username root
--password kb10
--query "select sid,student_id,course_id,score from score where $CONDITIONS"
--target-dir /kb10/test1119
--split-by sid
-m 2
--check-column sid
--incremental append
--last-value 0
* 首先表明要连接的数据库类型,客户机的IP地址或者主机名,数据库名称,用户名和密码。
* 可以通过命令 table 来指定导入某一张表,也可以通过查询命令 query 来获取指定字段内容。
* $CONDITIONS 通过 check-column 和 last-value 结合实现增量导入数据的条件。
* 首次导入为全量导入,last-value 为 0。增量导入数据时 last-value 为当前已导入数据行数。
* target-dir 指定数据导入目录。
* -m 等同于 --num-mappers,-m 和 --split-by 结合实现numberReduceTasks并行。
* incremental append 增量导入数据命令,只支持新增不支持更新。
* incremental append 和 delete-target-dir 不能同时使用。
二、RDBMS => Hive
sqoop import
--connect jdbc:mysql://single:3306/kb10
--username root
--password kb10
--num-mappers 1
--table student
--hive-import
--hive-table test1118
--fields-terminated-by '|'
--hive-overwrite
--delete-target-dir
* delete-target-dir 表示如果目录已存在则删除
* 从关系型数据库向Hive导入数据,无需指定路径,会自动保存到之前手动创建的目录下
/opt/software/hadoop/hive110/warehouse
三、RDBMS => Hbase
sqoop import
--connect jdbc:mysql://single:3306/kb10
--username root
--password kb10
--table student
--hbase-table kb10:mysql_stu
--column-family score
--hbase-create-table
--hbase-row-key stuNo
--hbase-bulkload
* hbase-table 指定命名空间和表名
* column-family 指定列簇名
* hbase-row-key 指定行键(排序字段),必须是表格中存在的字段名
* hbase-bulkload 不用指定输出的路径,自动数据转移
* 若表不存在,可以通过 hbase-create-table 命令自动创建
* 也可以在shell窗口下手动创建,需要指定命名空间、表名、列簇名
//创建命名空间
create_namespace school
//hbase手动建表,school为命名空间,mysql_school为表名,后面三个为列簇名
create 'school:mysql_school','basicscore','classinfo','scoreinfo'
//使用columns从数据库的表中删选部分字段导入hbase
sqoop import
--connect jdbc:mysql://single:3306/school
--username root
--password kb10
--table stu_info
--columns id,stuName,stuGender,province,city,district
--hbase-table school:mysql_school
--column-family basicinfo
--hbase-row-key id
--num-mappers 1
--hbase-bulkload
//如果使用query语句则无需--hbase-bulkload
//查询语句后面必须有where $CONDITIONS
sqoop import
--connect jdbc:mysql://single:3306/school
--username root
--password kb10
--query 'select id,proName,className,openDate from stu_info where $CONDITIONS'
--hbase-table school:mysql_school
--column-family classinfo
--hbase-row-key id
--num-mappers 1
* hbase 内容为 byte[ ],shell 窗口下中文无法正常显示,如下图
四、HDFS/Hive => RDBMS
- mysql建表
create table hive_shop(
id int,
name varchar(50),
mobile varchar(20),
address varchar(100),
vol2020 int
);
- 数据导出
sqoop export
--connect jdbc:mysql://single:3306/kb10
--username root
--password kb10
--table hive_shop
--columns id,name,mobile,address,vol2020
--fields-terminated-by ','
--export-dir '/kb10/shop1118/000000_0'
* fields-terminated-by 表示原表字段分隔符
* export-dir 表示导出文件路径,HDFS和Hive的文件存储路径有所不同
五、Hive => HDFS
//插入数据
insert overwrite directory '/kb10/shop1118/'
row format delimited
fields terminated by ','
stored as textfile
select
shopid,
shopname,
contact.mobile mobile,
concat_ws('',address) address,
volumn['2020'] vol2020
from shop;
//导出数据
export table TABLE_NAME [partition (PART_COLUMN="VALUE"[, ...])]
to 'export_target_path' [ for replication('EVENT_ID') ]
六、HDFS => Hive
//上传数据
load data [local] inpath 'HDFS_PATH' into table [partition (PART_COLUMN="VALUE"[, ...])];
//导入数据
import [[external] table NEW_TABLE [partition (PART_COLUMN="VALUE"[, ...])]]
from 'SOURCE_PATH' [location 'IMPORT_TARGET_PATH']
最后
以上就是贪玩火龙果为你收集整理的Sqoop数据传输Sqoop简介一、RDBMS => HDFS二、RDBMS => Hive三、RDBMS => Hbase四、HDFS/Hive => RDBMS五、Hive => HDFS六、HDFS => Hive的全部内容,希望文章能够帮你解决Sqoop数据传输Sqoop简介一、RDBMS => HDFS二、RDBMS => Hive三、RDBMS => Hbase四、HDFS/Hive => RDBMS五、Hive => HDFS六、HDFS => Hive所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复