sqoop2用法介绍及问题解决方法

什么是sqoop

sqoop通俗讲就是支持将mysql,oracle等关系型数据库数据导入到hdfs中的工具。

用的是mapreduce这种计算模式,只要在一台服务器上安装,整个服务器集群都能开启服务。

 

我的项目中用到sqoop2

        mysql中数据——>hdfs ——>hive


       其中mysql数据到hdfs就是由sqoop完成,hdfs数据导入到hive则是通过在hive中建表,通过load....overwrite....hive命令导入建好的hive表。

如何使用sqoop2

        我是在两台服务器上运行sqoop,一台作为服务端,一台作为客户端。 找到sqoop安装目录,进入bin目录,里面有一个sqoop2-server服务端脚本,启动服务端命令

./sqoop2-server start

在另一台服务器上打开bin目录,看到有sqoop2-shell客户端脚本,启动客户端命令

./sqoop2-shell

接着让客户端连接上服务端

set server --host 客户端服务器ip --port 12000 --webapp sqoop

到此,连接建立成功。

数据导入到hdfs

     在客户端创建link,link是基于connector的,创建link的过程相当于是connector的实例化,将指定链接的地址、用户名密码等信息。有了link之后就可以创建job,job对应两个link,一个连接数据源一个连接数据目的地。job创建完成后并没有实际执行数据的传输,可以在任意时间启动创建成功的job。


   创建link1,link1为hdfs的链接

create link -c hdfs-connector

  创建link2,link2为关系型数据库的链接

create link -c generic-jdbc-connector

    link创建好后,创建job,一个job对应mysql数据库的一张表

create job -f link2名称 -t link1名称

    启动job,开启服务

start job --id job的id

hdfs数据到hive

  hive建表,表结构与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;

导数据

load data inpath'hdfs中存mysql数据的目录' overwrite into table configure_detection_area 
partition(resource_scheme='suidao');

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值