概述
sqoop通俗讲就是支持将mysql,oracle等关系型数据库数据导入到hdfs中的工具。
用的是mapreduce这种计算模式,只要在一台服务器上安装,整个服务器集群都能开启服务。
例子1:
项目需求:mysql——>hdfs ——>hive
其中mysql数据到hdfs就是由sqoop完成,hdfs数据导入到hive则是通过在hive中建表,通过load....overwrite....hive命令导入建好的hive表。
我是在两台服务器上运行sqoop,一台作为服务端,一台作为客户端。 找到sqoop安装目录,进入bin目录,里面有一个1.sqoop2-server服务端脚本,启动服务端命令
./sqoop2-server start
2.在另一台服务器上打开bin目录,看到有sqoop2-shell客户端脚本,启动客户端命令
./sqoop2-shell
3.接着让客户端连接上服务端
set server --host 客户端服务器ip --port 12000 --webapp sqoop
到此,连接建立成功。
数据导入到hdfs
在客户端创建link,link是基于connector的,创建link的过程相当于是connector的实例化,将指定链接的地址、用户名密码等信息。有了link之后就可以创建job,job对应两个link,一个连接数据源一个连接数据目的地。job创建完成后并没有实际执行数据的传输,可以在任意时间启动创建成功的job。
4.创建link1,link1为hdfs的链接
create link -c hdfs-connector
5.创建link2,link2为关系型数据库的链接
create link -c generic-jdbc-connector
6.link创建好后,创建job,一个job对应mysql数据库的一张表
create job -f link2名称 -t link1名称
7.启动job,开启服务
start job --id job的id
8.hdfs数据到hivehive建表,表结构与mysql数据库中表结构一样。
create table configure_detection_area(
id bigint,
cameraId bigint
) partitioned by(resource_scheme STRING)
row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
with serdeproperties(
"separatorChar"=",",
"quoteChar"="'",
"escapeChar"="\"
)stored as textfile;
9.导数据
load data inpath'hdfs中存mysql数据的目录' overwrite into table configure_detection_area
partition(resource_scheme='suidao');
例子2:
需求:将 bbs_product 表中的前100条数据导 导出来 只要id brand_id和 name 这3个字段
1.先将mysql一张表的数据用sqoop导入到hdfs中
数据存在 hdfs 目录 /user/xuyou/sqoop/imp_bbs_product_sannpy_ 下
加了 direct 属性在导出mysql数据库表中的数据会快一点 执行的是mysq自带的导出功能
bin/sqoop import
--connect jdbc:mysql://172.16.71.27:3306/babasport
--username root
--password root
--query 'select id, brand_id,name from bbs_product where $CONDITIONS LIMIT 100'
--target-dir /user/xuyou/sqoop/imp_bbs_product_sannpy_
--delete-target-dir
--num-mappers 1
--compress
--compression-codec org.apache.hadoop.io.compress.SnappyCodec
--direct
--fields-terminated-by 't'
2.启动hive 在hive中创建一张表
drop table if exists default.hive_bbs_product_snappy ;
create table default.hive_bbs_product_snappy(
id int,
brand_id int,
name string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY 't' ;
3.将hdfs中的数据导入到hive中
load data inpath '/user/xuyou/sqoop/imp_bbs_product_sannpy_' into table default.hive_bbs_product_snappy ;
结果展示(重要):
此时hdfs 中原数据没有了
进入hive的hdfs存储位置,已迁移过来
原文地址:1:https://blog.csdn.net/weixin_42515384/article/details/81206197
原文地址2:https://www.cnblogs.com/xuyou551/p/7998846.html
最后
以上就是专一鸡翅为你收集整理的sqoop2用法介绍的全部内容,希望文章能够帮你解决sqoop2用法介绍所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复