sqoop使用

这篇具有很好参考价值的文章主要介绍了sqoop使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


在使用sqoop之前,需要提前启动hadoop, yarn和对应的数据库mysql

1. 导入数据

在sqoop中,导入的概念是从非大数据集群(关系型数据库向大数据集群(thdfs,hive]中传输数据,使用import关键字

2. 从mysql向hive导入数据

2.1 导入用户信息表

sqoop import  \
--connect jdbc:mysql://bigdata03:3306/mall \
--username root  \
--password 111111 \
--table t_user_info \
--num-mappers 1 \
--hive-import  \
--fields-terminated-by "," \
--hive-overwrite \
--hive-table mall_bigdata.ods_user_info

里面的 \ 是代表换行符,这里指令可以写在一行,也可以使用换行符将参数部分分来来写,显得更加直观,num-mappers是指定mapper任务个数,这里表只有一个,数据量也少,任务可以设为1,当表多,数据量大时,可以适当增大num-mappers参数,fields-terminated-by是指定分隔符

注:bigdata03虚拟机会开两个tab窗口,一个用于输入相关shell命令,一个用于开启hive命令行界面进行相关数据查询等。

sqoop使用
sqoop使用

sqoop使用

hive 导入完成

sqoop使用

查看导入的用户信息表数据

select * from mall_bigdata.ods_user_info;

sqoop使用

2.导入订单表

2.2 导入订单表

sqoop import  \
--connect jdbc:mysql://bigdata03:3306/mall \
--username root  \
--password 111111 \
--table t_sale_order \
--num-mappers 1 \
--hive-import  \
--fields-terminated-by "," \
--hive-overwrite \
--hive-table mall_bigdata.ods_sale_order

sqoop使用

查看导入的订单表数据

select * from mall_bigdata.ods_sale_info;

sqoop使用

2.3 导入商品信息表

sqoop import  \
--connect jdbc:mysql://bigdata03:3306/mall \
--username root  \
--password 111111 \
--table dim_goods_info \
--num-mappers 1 \
--hive-import  \
--fields-terminated-by "," \
--hive-overwrite \
--hive-table mall_bigdata.dim_goods_info

sqoop使用

select * from mall_bigdata.dim_goods_info;

sqoop使用

2.4 导入国家信息表

sqoop import  \
--connect jdbc:mysql://bigdata03:3306/mall \
--username root  \
--password 111111 \
--table dim_country_info \
--num-mappers 1 \
--hive-import  \
--fields-terminated-by "," \
--hive-overwrite \
--hive-table mall_bigdata.dim_country_info

sqoop使用

select * from mall_bigdata.dim_country_info;

sqoop使用

2.5 导入省份信息表

sqoop import  \
--connect jdbc:mysql://bigdata03:3306/mall \
--username root  \
--password 111111 \
--table dim_province_info \
--num-mappers 1 \
--hive-import  \
--fields-terminated-by "," \
--hive-overwrite \
--hive-table mall_bigdata.dim_province_info

sqoop使用

select * from mall_bigdata.dim_province_info;

sqoop使用

2.6 导入城市信息表

sqoop import  \
--connect jdbc:mysql://bigdata03:3306/mall \
--username root  \
--password 111111 \
--table dim_city_info \
--num-mappers 1 \
--hive-import  \
--fields-terminated-by "," \
--hive-overwrite \
--hive-table mall_bigdata.dim_city_info

sqoop使用

select * from mall_bigdata.dim_city_info;

sqoop使用
创建tmp_dwd_user_info.sql 并上传到 /opt/file

-- 切换hive的数据库
use mall_bigdata;

-- 补全用户信息表中的国家名称,省份名称和城市名称
create table if not exists mall_bigdata.tmp_dwd_user_info
as
select
	 user_id
	,user_name
	,sex
	,age
	,country_name
	,province_name
	,city_name
from
(select
	 user_id
	,user_name
	,sex
	,age
	,country_code
	,province_code
	,city_code
from ods_user_info
) a
left join
(select
	country_code
	,country_name
	from dim_country_info
) b
on a.country_code=b.country_code
left join
(select
	province_code
	,province_name
	,country_code
	from dim province_info
) c
on a.province_code=c.province_code and a.country_code=c.country_code
left join
(select
	city_code
	,city_name
	,province_code
	from dim_city_info
) d
on a.city_code=d.city_code and a.province_code=d.province_code;

sqoop使用

2.7 创建hive表文件

创建hive临时表文件tmp_dwd_user_info.txt

-- 切换hive的数据库
use mall_bigdata;

-- 补全用户信息表中的国家名称,省份名称和城市名称
create table if not exists mall_bigdata.tmp_dwd_user_info
as
select
	 user_id
	,user_name
	,sex
	,age
	,country_name
	,province_name
	,city_name
from
(select
	 user_id
	,user_name
	,sex
	,age
	,country_code
	,province_code
	,city_code
from ods_user_info
) a
left join
(select
	country_code
	,country_name
	from dim_country_info
) b
on a.country_code=b.country_code
left join
(select
	province_code
	,province_name
	,country_code
	from dim_province_info
) c
on a.province_code=c.province_code and a.country_code=c.country_code
left join
(select
	city_code
	,city_name
	,province_code
	from dim_city_info
) d
on a.city_code=d.city_code and a.province_code=d.province_code;

执行该hive文件

sqoop使用

select * from tmp_dwd_user_info;

sqoop使用

创建hive表文件dwd_sale_order_detail.sql到 /opt/file/目录

-- 切换hive的数据库
use mall_bigdata;

-- 补全用户信息表中的国家名称,省份名称和城市名称
create table if not exists mall_bigdata.tmp_dwd_user_info
as
select
	 user_id
	,user_name
	,sex
	,age
	,country_name
	,province_name
	,city_name
from
(select
	 user_id
	,user_name
	,sex
	,age
	,country_code
	,province_code
	,city_code
from ods_user_info
) a
left join
(select
	country_code
	,country_name
	from dim_country_info
) b
on a.country_code=b.country_code
left join
(select
	province_code
	,province_name
	,country_code
	from dim_province_info
) c
on a.province_code=c.province_code and a.country_code=c.country_code
left join
(select
	city_code
	,city_name
	,province_code
	from dim_city_info
) d
on a.city_code=d.city_code and a.province_code=d.province_code;


--补全订单表中的商品名称
--过滤国家名称为中国的订单记录
create table if not exists mall_bigdata.dwd_sale_order_detail
as
select
	sale_id,
	a.user_id,
	user_name,
	sex,
	age,
	country_name,
	province_name,
	city_name,
	a.goods_id,
	goods_name,
	price,
	sale_count,
	total_price,
	create_time
from
(select
	sale_id
	,user_id
	,goods_id
	,price
	,sale_count
	,total_price
	,create_time
from ods_sale_order) a
left join
(
	select
		goods_id
		,goods_name
	from dim_goods_info
) b
on a.goods_id=b.goods_id
left join
(
	select
		user_id
		,user_name
		,sex
		,age
		,country_name
		,province_name
		,city_name
	from tmp_dwd_user_info
)c
on a.user_id=c.user_id
where country_name='中国';

--删除临时表
--drop table if exists mall_bigdata.tmp_dwd_user_info;


执行该sql文件

hive -f dwd_sale_order_detail.sql

sqoop使用

select * from dwd_sale_order_detail;

sqoop使用
创建dws_sale_order_city_total.sql文件至 /opt/file/目录

-- 切换hive的数据库
use mall_bigdata;

--计算不同城市的销售总额
create table if not exists mall_bigdata.dws_sale_order_city_total
as
	select
		city_name,
		sum(total_price) as total_price
	from dwd_sale_order_detail
	group by city_name;
	

文件执行hive命令

hive -f dws_sale_order_city_total.sql

sqoop使用

select * from dws_sale_order_city_total;

sqoop使用

3. 导出数据

在sqoop中,导出的概念是从大数据集群(hdfs,hive)向非大数据集群(关系型数据库)中传输数据;使用export关键字

4. 从hive向mysql导出数据

4.1 导出城市销售总额表

sqoop export \
--connect jdbc:mysql://bigdata03:3306/result \
--username root \
--password 111111 \
--table t_city_sale_total \
--num-mappers 1 \
--export-dir /user/hive/warehouse/mall_bigdata.db/dws_sale_order_city_total \
--input-fields-terminated-by "\001"

export-dir 对应的目录位置可以通过show create table 表名 查看

show create table dws_sale_order_city_total;

sqoop使用
当不指定分隔符时,hive默认分隔符为 “\001”

sqoop使用

进入result数据库查看结果

sqoop使用

这里的???是由于mysql编码不一致导致的,更改编码为UTF-8即可。

4.2 mysql修改字符集为UTF-8

## mysql修改字符集为UTF-8
4.2.1 启动mysql服务
systemctl start mysqld
4.2.2 登录mysql
mysql -uroot -p

##然后输入root密码进行登录
4.2.3 查询mysql字符集
##在mysql命令行下查询mysql状态
mysql>status;

sqoop使用

4.2.4 退出mysql并关闭mysql
## 退出mysql
mysql>exit;

## 关闭mysql
systemctl stop mysqld
4.2.5 编辑my.cnf配置文件
vim /etc/my.cnf

##添加如下内容

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

[client]
default-character-set=utf8

sqoop使用

4.2.6 启动mysql并登录
##启动mysql
systemctl start mysqld

##登录mysql
mysql -uroot -p
4.2.7 再次查询status;

sqoop使用

4.3 查看销售总额表结果

进入result数据库,刷新查看销售总额表结果

sqoop使用文章来源地址https://www.toymoban.com/news/detail-431072.html

到了这里,关于sqoop使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【OpenStack】实体机断电重启后,自动启动之前是开机状态的虚拟机

    有时候服务器意外断电,恢复供电后OpenStack虚拟机都是 关闭 状态的。手动重启非常麻烦。 解决方法如下: 修改所有计算节点上的 nova.conf 配置文件 在 [DEFAULT] 中添加以下代码 重启 nova-compute 服务 至此,以后在断电,就不用手动重启之前是 运行 状态的虚拟机了。

    2024年02月11日
    浏览(44)
  • tomcat启动失败:org.apache.catalina.core.StandardContext.startInternal 由于之前的错误,Context[]启动失败

    问题描述: 提示代码问题如下: 出现这种情况: 原因分析: 提示:今天启动tomcat,发现启动不起来。找了半天错误,原来是maven导入依赖的包没有起作用。 解决方案: 提示:这个应该是idea的一个bug吧。不会在springmvc项目中找到项目的jar包,不过我们只要自己手动添加下就

    2024年02月04日
    浏览(46)
  • 使用selenium,但chrome无法启动,需要安装浏览器对应版本(最新)的chromedriver

    使用selenium无法启动chrome,代码 报错如下: 安装地址 查询了浏览器版本:117.0.5927 但是国内的镜像网找不到,只更新到114版本 需要安装驱动,点击了最下面的网址 https://chromedriver.chromium.org/home 如图为有效信息 - 点击跳转: https://googlechromelabs.github.io/chrome-for-testing (点击这里

    2024年02月11日
    浏览(70)
  • JavaScript中,一个字符串A在另外一个字符串B中重复出现,需要从B中去除A包括A之前和A之后的若干字符串

    !DOCTYPE html html head     meta charset=\\\"utf-8\\\"     title重复除去一个字符串前若干和后若干个字符/title /head body     h1我的网页/h1     p id=\\\"demo\\\"我的第一个段落。/p     script         function removeCharsAndTarget(str, target) {                      const regex = new RegExp(\\\'(.{0,2})?(\\\' + target + \\\')(.

    2024年02月08日
    浏览(55)
  • 【Sqoop】Sqoop的使用(连接MySQL、Hive)

    使用 sqoop 前需要启动 Hadoop ,检查 Hadoop 的运行状态,我们这里使用的是伪分布式 Sqoop 连接 MySQL 需要 MySQL 的 jar 包,吧 jar 包放置 Sqoop 的 lib 目录下 先测试 Sqoop 能否连接 MySQL 查看存在的数据库 结果中的警告是因为没有配置 Hbase ,忽略即可 为了连接 HIve 我们需要将 Hive 组件

    2024年02月07日
    浏览(56)
  • Sqoop的安装和使用

    目录 一.安装 二.导入 1.全量导入 一.MySQL导入HDFS  二.MySQL导入Hive  2.增量导入 一.过滤导入hdfs/hive 二.导出   【CSDN中我的资源包直接下载】  1.下载地址(速度更快) :sqoop下载地址  【官方下载】  2.下载地址(速度更慢):sqoop下载地址  2.解压 3.改名和配置归属权限  4

    2024年02月05日
    浏览(44)
  • sqoop使用

    在使用sqoop之前,需要提前启动hadoop, yarn和对应的数据库mysql 在sqoop中,导入的概念是从非大数据集群(关系型数据库向大数据集群(thdfs,hive]中传输数据,使用import 2.1 导入用户信息表 里面的 是代表换行符,这里指令可以写在一行,也可以使用换行符将参数部分分来来写

    2024年02月02日
    浏览(28)
  • sqoop的详细使用文档和使用案例

    Sqoop是一个开源的、用于在Hadoop生态系统和关系型数据库之间传输大量数据的工具。它允许用户将数据从关系型数据库导入到Hadoop中,并将Hadoop中的数据导出到关系型数据库中。Sqoop支持各种关系型数据库,如MySQL、Oracle、PostgreSQL、SQL Server等。 Sqoop Client:用于管理Sqoop作业的

    2024年02月05日
    浏览(36)
  • 浅析MySQL代价模型:告别盲目使用EXPLAIN,提前预知索引优化策略

    在 MySQL 中,当我们为表创建了一个或多个索引后,通常需要在索引定义完成后,根据具体的数据情况执行 EXPLAIN 命令,才能观察到数据库实际使用哪个索引、是否使用索引。这使得我们在添加新索引之前,无法提前预知数据库是否能使用期望的索引。更为糟糕的是,有时甚至

    2024年02月05日
    浏览(49)
  • 使用Python打造一个爱奇艺热播好剧提前搜系统

    目录 一、系统功能设计 二、数据获取与处理 三、搜索功能实现 四、用户界面设计 五、系统部署与维护 六、总结 随着互联网的普及和人们对于娱乐需求的增加,视频网站成为了人们观看电视剧、电影等视频内容的主要渠道。爱奇艺作为国内知名的视频网站之一,拥有大量的

    2024年02月02日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包