【Sqoop】导入导出数据

导入数据到hdfs

(1)MySQL准备表和数据

# 建库
create database sqooptest;
use sqooptest;
# 建表
create table person(id int primary key auto_increment,name varchar(30),age int,score int,position varchar(30));

# 插入数据
insert into person values(null,'zhangsan',34,66,'boss');

insert into person values(null,'lisi',34,66,'worker');

insert into person values(null,'wangwu',34,66,'master');

# 展示数据
desc person;

(2)MySQL数据 import 到hdfs

sqoop import \
--connect jdbc:mysql://hadoop01:3306/sqooptest \
--username root \
--password 123456 \
--table person \
--target-dir /sqoop/person \
--delete-target-dir \
--fields-terminated-by '\t' \
--m 1

导出到hdfs后,默认保存位置为/user/root/数据库表名,如下图所示。查看导出的内容,发现跟mysql中的一致,并且字段值之间使用\t隔开。

[root@hadoop03 ~]# hadoop fs -cat /sqoop/person/part-m-00000
1       zhangsan        33      88      boss
2       lisi    44      99      worker
3       wangwu  23      77      master

导入数据到Hive

导出数据到hive前,需要将hive中的一个包(hive-exec-1.2.1.jar)拷贝到sqoop的lib目录。

[root@hadoop01 lib]# cp hive-exec-1.2.1.jar /export/servers/sqoop-1.4.6/lib/

(1) Hive中建库建表,无数据。

# 建库
create database sqooptohive;
use sqooptohive;
# 建表
create external table person(id int,name string,age int,score int,position string)row format delimited fields terminated by '\t';

sqoop导入数据到hive表中。

sqoop import \
--connect jdbc:mysql://hadoop01:3306/sqooptest \
--username root \
--password 123456 \
--table person \
--fields-terminated-by '\t' \
--delete-target-dir \
--hive-import \
--hive-table sqooptohive.person \
--hive-overwrite \
--m 1

导出数据

hdfs导出到MySQL

hdfs先准备数据文件

[root@hadoop01 ~]# hadoop fs -cat /sqoopresult/hdfstomysql.txt 
110 zhangsan 44 88
120 lisi 22 99
119 wangwu 18 77

mysql中需要先建表,否则会报错。

CREATE TABLE sqooptest.hdfstomysql (
    id INT NOT NULL,
    name varchar(100) NOT NULL,
    age INT NOT NULL,
    score INT NOT NULL
)
ENGINE=InnoDB
DEFAULT CHARSET=utf8
COLLATE=utf8_general_ci;

sqoop命令执行导出。

sqoop export \
--connect jdbc:mysql://hadoop01:3306/sqooptest \
--username root \
--password 123456 \
--table hdfstomysql \
--export-dir /sqoopresult \
--input-fields-terminated-by " "
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_popo_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值