百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

Sqoop使用-实战案例

bigegpt 2024-09-14 00:15 9 浏览

一.====sqoop使用========

  1. sqoop命令:

显示某个子命令的帮助信息,

list-databases是一个子命令

$ bin/sqoop help

$ bin/sqoop list-databases --help

2.示例

--显示出对应节点上的所有数据库,用来测试

RDBMS[mysql]是否能够连接,

'\'表示一条命令语句中的换行

$ bin/sqoop list-databases \

--connect jdbc:mysql://li:3306 \

--username root \

--password root

二.====mysql导入HDFS=====

案例一: 利用sqoop把mysql里面的数据导入到HDFS

1、在mysql里面创建测试表

CREATE TABLE `my_user` (

`id` tinyint(4) NOT NULL AUTO_INCREMENT,

`account` varchar(255) DEFAULT NULL,

`passwd` varchar(255) DEFAULT NULL,

PRIMARY KEY (`id`)

);

INSERT INTO `my_user` VALUES ('1', 'admin', 'admin');

INSERT INTO `my_user` VALUES ('2', 'pu', '12345');

INSERT INTO `my_user` VALUES ('3', 'system', 'system');

INSERT INTO `my_user` VALUES ('4', 'zxh', 'zxh');

INSERT INTO `my_user` VALUES ('5', 'test', 'test');

INSERT INTO `my_user` VALUES ('6', 'pudong', 'pudong');

INSERT INTO `my_user` VALUES ('7', 'qiqi', 'qiqi');

INSERT INTO `my_user` VALUES ('8', 'congcong', 'congcong');

2、使用sqoop导入数据到HDFS

$ bin/sqoop import --help

$ bin/sqoop import \

--connect jdbc:mysql://li:3306/mydb \

--username root \

--password root \

--table my_user \

--target-dir /user/hive/warehouse/my_user \

--delete-target-dir \

--num-mappers 1 \

--fields-terminated-by "\t"

target-dir:HDFS输出目录

delete-target-dir:如果上面输出目录存在,就先删除

num-mappers:设置map个数为1,默认情况下map个数是4,

fields-terminated-by "\t":指定列分隔符为 \t

查看:$ hdfs dfs -cat /user/hive/warehouse/my_user/p*

--------------------------

3、指定具体列(num-mappers为2,生成2个文件)

$ bin/sqoop import \

--connect jdbc:mysql://blue01.mydomain:3306/mydb \

--username root \

--password root \

--table my_user \

--target-dir /user/hive/warehouse/my_user \

--delete-target-dir \

--num-mappers 2 \

--fields-terminated-by "\t" \

--columns id,passwd

---------------------------

4、用where指定条件

$ bin/sqoop import \

--connect jdbc:mysql://blue01.mydomain:3306/mydb \

--username root \

--password root \

--table my_user \

--target-dir /user/hive/warehouse/my_user \

--delete-target-dir \

--num-mappers 1 \

--fields-terminated-by "\t" \

--columns id,passwd \

--where "id<=3"

--------------------------

5、把select语句的查询结果导入,必需包含

'$CONDITIONS'在WHERE子句,否则报错

--query "select id,name from my_user

where id>=3 and $CONDITIONS"

$ bin/sqoop import \

--connect jdbc:mysql://blue01.mydomain:3306/mydb \

--username root \

--password root \

--target-dir /user/hive/warehouse/my_user \

--delete-target-dir \

--num-mappers 1 \

--fields-terminated-by "\t" \

--query 'select id,account from my_user

where id>=3 and $CONDITIONS'

=====mysql导入Hive=======

案例二: 把mysql里的数据导入到Hive

1、先要创建好Hive表

hive> create database mydb;

hive> use mydb;

CREATE TABLE mydb.my_user (

id int,

account string,

passwd string

)row format delimited fields terminated by "\t";

2、导入数据到Hive

$ bin/sqoop import \

--connect jdbc:mysql://blue01.mydomain:3306/mydb \

--username root \

--password root \

--table my_user \

--num-mappers 1 \

--hive-import \

--hive-database mydb \

--hive-table my_user \

--fields-terminated-by "\t" \

--delete-target-dir \

--hive-overwrite

3、查看结果:hive> select * from my_user;

====Hive或HDFS导出到mysql===

案例三:从Hive或HDFS中把数据导出到mysql

1、先创建一个mysql表

CREATE TABLE `hive2mysql` (

`id` tinyint(4) PRIMARY KEY AUTO_INCREMENT,

`account` varchar(255),

`passwd` varchar(255)

);

2、从hive或者hdfs导入到Mysql表

$ bin/sqoop export \

--connect jdbc:mysql://blue01.mydomain:3306/mydb \

--username root \

--password root \

--table hive2mysql \

--num-mappers 1 \

--export-dir /user/hive/warehouse/mydb.db/my_user \

--input-fields-terminated-by "\t"

====脚本文件执行=======

3、创建一个opt脚本文件(注意:必需要换行)

vi job1.opt

export

--connect

jdbc:mysql://li:3306/mydb

--username

root

--password

root

--table

hive2mysql

--num-mappers

1

--export-dir

/user/hive/warehouse/mydb.db/my_user

--input-fields-terminated-by

"\t"

4、使用sqoop执行这个文件

** 删除掉表中数据,避免主键重复

$ bin/sqoop --options-file job1.opt

案例四

统计某个网站每天每个小时的PV、UV(参见图)

PV(访问量):即Page View, 即页面浏览量或点击量,

在一定统计周期内用户每次刷新网页一次即被计算一次。

UV(独立访客):即Unique Visitor,访问您网站的一台电

脑客户端为一个访客。00:00-24:00内相同的客户端只

被计算一次。

IP(独立IP):即Internet Protocol,指独立IP数。

00:00-24:00内相同IP地址之被计算一次。

** Hive分析流程:

** 1、把日志文件从linux本地上传到HDFS

** 2、把上传的文件导入对应的Hive表[表1]

** 3、利用Hive进行业务需求分析

** 4、Hive语句的分析结果临时存储在Hive表[表2]

** 5、利用sqoop把Hive表[表2]的数据导入mysql永久存储

数据源文件:

2019082818 --自定义数据

2019082819 --自定义数据

1、创建Hive分区表  [表1]

** create database if not exists mydb;

create table if not exists mydb.track_log(

id string,

url string,

referer string,

keyword string,

type string,

guid string,

pageId string,

moduleId string,

linkId string,

attachedInfo string,

sessionId string,

trackerU string,

trackerType string,

ip string,

trackerSrc string,

cookie string,

orderCode string,

trackTime string,

endUserId string,

firstLink string,

sessionViewNo string,

productId string,

curMerchantId string,

provinceId string,

cityId string,

fee string,

edmActivity string,

edmEmail string,

edmJobId string,

ieVersion string,

platform string,

internalKeyword string,

resultSum string,

currentPage string,

linkPosition string,

buttonPosition string

)

partitioned by (date string,hour string)

row format delimited fields terminated by '\t';

2、上传数据HDFS,再创建Hive表去关联

2.1 创建目录 在hadoop cdh 那个目录下

$ bin/hdfs dfs -mkdir -p /user/hive/warehouse

/mydb.db/track_log/date=20190828/hour=18

$ bin/hdfs dfs -mkdir -p /user/hive/warehouse

/mydb.db/track_log/date=20190828/hour=19

2.2 上传文件到对应的目录

$ bin/hdfs dfs -put /home/tom/2015082818 /user/hive

/warehouse/mydb.db/track_log/date=20190828/hour=18

$ bin/hdfs dfs -put /home/tom/2019082819 /user/hive

/warehouse/mydb.db/track_log/date=20190828/hour=19

2.3 给分区表关联数据 在hive里执行

alter table track_log add partition(date='20190828',hour='18')

location "/user/hive/warehouse/mydb.db/track_log

/date=20190828/hour=18";

alter table track_log add partition(date='20150828',hour='19')

location "/user/hive/warehouse/mydb.db/track_log

/date=20150828/hour=19";

3、利用Hive分析每天每个小时PV、UV

** 创建临时表用于临时保存当天的分析记录

create table mydb.tracklog_pvuv_hourly(

date string,

hour string,

pv string,

uv string

)row format delimited fields terminated by '\t';

** 把分析结果保存到临时表

** url为链接,guid为唯一用户ID

insert overwrite table mydb.tracklog_pvuv_hourly

select date,hour,count(url),count(distinct guid)

from track_log where date='20190828'

group by date,hour;

4、利用sqoop把分析结果导入mysql表存储

4.1在mysql里面创建表:

create table mydb.tracklog_pvuv_hourly(

date int,

hour int,

pv bigint,

uv bigint

);

4.2 创建一个opt文件

vi job2.opt

export

--connect

jdbc:mysql://li:3306/mydb

--username

root

--password

root

--table

tracklog_pvuv_hourly

--num-mappers

1

--export-dir

/user/hive/warehouse/mydb.db/tracklog_pvuv_hourly

--input-fields-terminated-by

"\t"

4.3 执行脚本文件

$ bin/sqoop --options-file job2.opt

以上操作完称之后在mysql里面执行

mysql> select * from mydb.tracklog_pvuv_hourly

查看分析的数据.

相关推荐

或者这些Joplin插件也可以帮助你的笔记应用再一次强大

写在前面距离上次分享《搭建私有全平台多端同步笔记,群晖NAS自建JoplinServer服务》已过去一段时间,大家是否开始使用起来了呢?如果你和我一样已经使用过Joplin有一段时间了,那或许你也会...

Three.JS教程4 threejs中的辅助类

一、辅助类简介Three.js提供了一些辅助类(Helpers)以帮助我们更容易地调试、可视化场景中的元素。ArrowHelepr:创建箭头辅助器;AxisHelper:创建坐标轴辅助器;BoxH...

第2章 还记得点、线、面吗(二)(第二章还能敲钟吗)

glbgltf模型(webvrmodel)-gltf模型下载定制,glb模型下载定制,三维项目电商网站在线三维展示,usdz格式,vr模型网,网页VR模型下载,三维模型下载,webgl网页模型下载我...

如何检查Linux系统硬件信息?从CPU到显卡,一网打尽!

你可能会问:“我为什么要关心硬件信息?”答案很简单:硬件是Linux系统的根基,了解它可以帮你解决很多实际问题。比如:性能调优:知道CPU核心数和内存大小,才能更好地调整程序运行参数。故障排查:系统卡...

SpriteJS:图形库造轮子的那些事儿

从2017年到2020年,我花了大约4年的时间,从零到一,实现了一个可切换WebGL和Canvas2D渲染的,跨平台支持浏览器、SSR、小程序,基于DOM结构和支持响应式的,高...

平时积累的FPGA知识点(6)(fpga经典应用100例)

平时在FPGA群聊等积累的FPGA知识点,第六期:1万兆网接口,发三十万包,会出现掉几包的情况,为什么?原因:没做时钟约束,万兆网接口的实现,本质上都是高速serdes,用IP的话,IP会自带约束。...

芯片逻辑调度框架设计 都需要那些那些软件工具

设计芯片逻辑调度框架通常需要使用以下软件工具:1.逻辑设计工具:例如Vivado、Quartus、SynopsysDesignCompiler等,用于设计和实现逻辑电路。2.仿真工具:例如Mo...

ZYNQ与DSP之间EMIF16通信(正点原子领航者zynq之fpga开发指南v3)

本文主要介绍说明XQ6657Z35-EVM高速数据处理评估板ZYNQ与DSP之间EMIF16通信的功能、使用步骤以及各个例程的运行效果。[基于TIKeyStone架构C6000系列TMS320C6...

好课推荐:从零开始大战FPGA(从零开始的冒险4399)

从零开始大战FPGA引子:本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“...

业界第一个真正意义上开源100 Gbps NIC Corundum介绍

来源:内容由「网络交换FPGA」编译自「FCCM2020」,谢谢。FCCM2020在5月4日开始线上举行,对外免费。我们有幸聆听了其中一个有关100G开源NIC的介绍,我们对该文章进行了翻译,并对其中...

高层次综合:解锁FPGA广阔应用的最后一块拼图

我们为什么需要高层次综合高层次综合(High-levelSynthesis)简称HLS,指的是将高层次语言描述的逻辑结构,自动转换成低抽象级语言描述的电路模型的过程。所谓的高层次语言,包括C、C++...

Xilinx文档编号及其内容索引(部分)

Xilinx文档的数量非常多。即使全职从事FPGA相关工作,没有几年时间不可能对器件特性、应用、注意事项等等有较为全面的了解。本文记录了我自使用Xilinx系列FPGA以来或精读、或翻阅、或查询过的文...

Xilinx Vivado联合Modelsim软件仿真

引言:Xilinx公司Vivado开发软件自带仿真工具,可以实现一般性能的FPGA软件仿真测试,其测试执行效率以及性能都不如第三方专用仿真软件Modelsim强。本文我们介绍下如何进行Vivado20...

体育动画直播是怎么做出来的?从数据到虚拟赛场的科技魔法!

你是否见过这样的比赛直播?没有真实球员,却能看梅西带球突破?足球比赛变成动画版,但数据100%真实?电竞比赛用虚拟形象直播,选手操作实时同步?这就是体育动画直播——一种融合实时数据、游戏引擎和AI的...

Dialogue between CPC and political parties of neighboring countries held in Beijing

BEIJING,May26(Xinhua)--TheCommunistPartyofChina(CPC)inDialoguewithPoliticalPartiesof...