我是靠谱客的博主 贪玩火龙果,最近开发中收集的这篇文章主要介绍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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部