百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 博客教程 > 正文

Sqoop使用-实战案例

connygpt 2024-09-06 19:43 10 浏览

一.====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

查看分析的数据.

相关推荐

3分钟让你的项目支持AI问答模块,完全开源!

hello,大家好,我是徐小夕。之前和大家分享了很多可视化,零代码和前端工程化的最佳实践,今天继续分享一下最近开源的Next-Admin的最新更新。最近对这个项目做了一些优化,并集成了大家比较关注...

干货|程序员的副业挂,12个平台分享

1、D2adminD2Admin是一个完全开源免费的企业中后台产品前端集成方案,使用最新的前端技术栈,小于60kb的本地首屏js加载,已经做好大部分项目前期准备工作,并且带有大量示例代码,助...

Github标星超200K,这10个可视化面板你知道几个

在Github上有很多开源免费的后台控制面板可以选择,但是哪些才是最好、最受欢迎的可视化控制面板呢?今天就和大家推荐Github上10个好看又流行的可视化面板:1.AdminLTEAdminLTE是...

开箱即用的炫酷中后台前端开源框架第二篇

#头条创作挑战赛#1、SoybeanAdmin(1)介绍:SoybeanAdmin是一个基于Vue3、Vite3、TypeScript、NaiveUI、Pinia和UnoCSS的清新优...

搭建React+AntDeign的开发环境和框架

搭建React+AntDeign的开发环境和框架随着前端技术的不断发展,React和AntDesign已经成为越来越多Web应用程序的首选开发框架。React是一个用于构建用户界面的JavaScrip...

基于.NET 5实现的开源通用权限管理平台

??大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!??今天小编推荐一款基于.NE...

StreamPark - 大数据流计算引擎

使用Docker完成StreamPark的部署??1.基于h2和docker-compose进行StreamPark部署wgethttps://raw.githubusercontent.com/a...

教你使用UmiJS框架开发React

1、什么是Umi.js?umi,中文可发音为乌米,是一个可插拔的企业级react应用框架。你可以将它简单地理解为一个专注性能的类next.js前端框架,并通过约定、自动生成和解析代码等方式来辅助...

简单在线流程图工具在用例设计中的运用

敏捷模式下,测试团队的用例逐渐简化以适应快速的发版节奏,大家很早就开始运用思维导图工具比如xmind来编写测试方法、测试点。如今不少已经不少利用开源的思维导图组件(如百度脑图...)来构建测试测试...

【开源分享】神奇的大数据实时平台框架,让Flink&amp;Spark开发更简单

这是一个神奇的框架,让Flink|Spark开发更简单,一站式大数据实时平台!他就是StreamX!什么是StreamX大数据技术如今发展的如火如荼,已经呈现百花齐放欣欣向荣的景象,实时处理流域...

聊聊规则引擎的调研及实现全过程

摘要本期主要以规则引擎业务实现为例,陈述在陌生业务前如何进行业务深入、调研、技术选型、设计及实现全过程分析,如果你对规则引擎不感冒、也可以从中了解一些抽象实现过程。诉求从硬件采集到的数据提供的形式多种...

【开源推荐】Diboot 2.0.5 发布,自动化开发助理

一、前言Diboot2.0.5版本已于近日发布,在此次发布中,我们新增了file-starter组件,完善了iam-starter组件,对core核心进行了相关优化,让devtools也支持对IAM...

微软推出Copilot Actions,使用人工智能自动执行重复性任务

IT之家11月19日消息,微软在今天举办的Ignite大会上宣布了一系列新功能,旨在进一步提升Microsoft365Copilot的智能化水平。其中最引人注目的是Copilot...

Electron 使用Selenium和WebDriver

本节我们来学习如何在Electron下使用Selenium和WebDriver。SeleniumSelenium是ThoughtWorks提供的一个强大的基于浏览器的开源自动化测试工具...

Quick &#39;n Easy Web Builder 11.1.0设计和构建功能齐全的网页的工具

一个实用而有效的应用程序,能够让您轻松构建、创建和设计个人的HTML网站。Quick'nEasyWebBuilder是一款全面且轻巧的软件,为用户提供了一种简单的方式来创建、编辑...