前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Sqoop的数据导入

Sqoop的数据导入

作者头像
编程那点事
发布2023-02-25 15:21:54
4880
发布2023-02-25 15:21:54
举报
文章被收录于专栏:java编程那点事

“导入工具”导入单个表从RDBMS到HDFS。表中的每一行被视为HDFS的记录。所有记录都存储为文本文件的文本数据(或者Avro、sequence文件等二进制数据)

语法

下面的语法用于将数据导入HDFS。

代码语言:javascript
复制
$ sqoop import (generic-args) (import-args)
示例

表数据

在mysql中有一个库sqoop_data中三个表:emp, emp_add和emp_contact

表emp:

1.png

表emp_add:

2.png

表emp_conn:

3.png

创建表

代码语言:javascript
复制
create table emp(

id int,

name varchar(20),

deg varchar(20),

salary  int,

dept varchar(20));

插入数据

代码语言:javascript
复制
insert into emp values(1201,'gopal','manager','50000','TP');

insert into emp values(1202,'manisha','Proof reader','50000','TP');

insert into emp values(1203,'khalil','php dev','30000','AC');

insert into emp values(1204,'prasanth','php dev','30000','AC');

insert into emp values(1205,'kranthui','admin','20000','TP');

insert into emp values(1206,'satish p','grp des','20000','GR');

创建表

代码语言:javascript
复制
create table emp_add(

id int,

hno varchar(20),

street varchar(20),

city varchar(20));

插入数据

代码语言:javascript
复制
insert into emp_add values(1201,'288A','vgiri','jublee');

insert into emp_add values(1202,'1801','aoc','sec-bad');

insert into emp_add values(1203,'144Z','pguttai','hyd');

insert into emp_add values(1204,'78B','old city','sec-bad');

insert into emp_add values(1205,'720X','hitec','sec-bad');

创建表

代码语言:javascript
复制
create table emp_conn(

id int,

phno int,

email varchar(20));

插入数据

代码语言:javascript
复制
insert into emp_conn values(1201,'2356742','gopal@tp.com');

insert into emp_conn values(1202,'1661663','manisha@tp.com');

insert into emp_conn values(1203,'8887776','khalil@ac.com');

insert into emp_conn values(1204,'9988774','prasanth@ac.com');

insert into emp_conn values(1205,'1231231','kranthi@tp.com');

导入表表数据到HDFS

下面的命令用于从MySQL数据库服务器中的emp表导入HDFS。

代码语言:javascript
复制
$bin/sqoop import --connect jdbc:mysql://hq666:3306/sqoop_data --username hive --password hive --table emp --m 1

如果成功执行,那么会得到下面的输出。

为了验证在HDFS导入的数据,请使用以下命令查看导入的数据

代码语言:javascript
复制
hadoop fs -cat /user/centos/emp/part-m-00000

emp表的数据和字段之间用逗号(,)表示。

代码语言:javascript
复制
1201, gopal,    manager, 50000, TP

1202, manisha,  preader, 50000, TP

1203, kalil,    php dev, 30000, AC

1204, prasanth, php dev, 30000, AC

1205, kranthi,  admin,   20000, TP

导入关系表到HIVE

代码语言:javascript
复制
bin/sqoop import --connect jdbc:mysql://hq666:3306/sqoop_data --username hive --password hive --table emp --hive -import --m 1

导入到HDFS指定目录

在导入表数据到HDFS使用Sqoop导入工具,我们可以指定目标目录。

以下是指定目标目录选项的Sqoop导入命令的语法。

代码语言:javascript
复制
--target-dir <new or exist directory in HDFS>

下面的命令是用来导入emp_add表数据到'/queryresult'目录。

代码语言:javascript
复制
bin/sqoop import --connect jdbc:mysql://hq666:3306/sqoop_data --username hive --password hive --target-dir /queryresult --table emp_add --m 1

下面的命令是用来验证 /queryresult 目录中 emp_add表导入的数据形式。

代码语言:javascript
复制
$HADOOP_HOME/bin/hadoop fs -cat /queryresult/part-m-*

它会用逗号(,)分隔emp_add表的数据和字段。

代码语言:javascript
复制
1201, 288A, vgiri,   jublee

1202, 108I, aoc,     sec-bad

1203, 144Z, pgutta,  hyd

1204, 78B,  oldcity, sec-bad

1205, 720C, hitech,  sec-bad

导入表数据子集

我们可以导入表的使用Sqoop导入工具,"where"子句的一个子集。它执行在各自的数据库服务器相应的SQL查询,并将结果存储在HDFS的目标目录。

where子句的语法如下。

代码语言:javascript
复制
--where <condition>

下面的命令用来导入emp_add表数据的子集。子集查询检索员工ID和地址,居住城市为:Secunderabad

代码语言:javascript
复制
bin/sqoop import --connect jdbc:mysql://hq666:3306/sqoop_data --username hive --password hive --where "city ='sec-bad'" --target-dir /wherequery --table emp_add --m 1

下面的命令用来验证数据从emp_add表导入/wherequery目录

代码语言:javascript
复制
$HADOOP_HOME/bin/hadoop fs -cat /wherequery/part-m-*

它用逗号(,)分隔 emp_add表数据和字段。

代码语言:javascript
复制
1202, 108I, aoc, sec-bad

1204, 78B, oldcity, sec-bad

1205, 720C, hitech, sec-bad
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 语法
  • 示例
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档