sqoop入门简介 | 安装部署 | sqoop案例展示

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

ETL工具sqoop

sqoop简介

Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个Apache项目。
Sqoop是一个在(MySQL、Oracle)等关系型数据库和大数据平台之间进行批量数据迁移的工具。Sqoop底层能实现将关系型数据库中的数据迁移到大数据平台上是因为sqoop的底层是采用MapReduce程序实现抽取、转换、加载,MapReduce本身就并行化和高容错率,能很好的保证数据的迁移,而且与Kettle等传统ETL工具相比,Sqoop的任务跑在Hadoop集群上,能有效减少ETL服务器资源的使用情况

sqoop安装

一、安装包的获取:

sqoop安装包:
官网:http://archive.apache.org/dist/sqoop/1.4.6/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
mysql驱动:
网盘链接:https://pan.baidu.com/s/1-xksqP7DhP3wWIQeKgVi7A
提取码:1111

二、上传安装包到服务器

将sqoop安装包和mysql驱动器上传到集群中
sqoop入门简介 | 安装部署 | sqoop案例展示

三、进行安装配置

①解压sqoop压缩包

tar -zvxf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /opt/module/

②修改名字

mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop

③修改配置文件
在sqoop/conf/目录下修改sqoop-env-template.sh的名字

mv sqoop-env-template.sh sqoop-env.sh

向sqoop-env.sh中最后添加如下配置:

export HADOOP_COMMON_HOME=/opt/module/hadoop-2.7.2
export HADOOP_MAPRED_HOME=/opt/module/hadoop-2.7.2
export HIVE_HOME=/opt/module/hive
export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.10
export ZOOCFGDIR=/opt/module/zookeeper-3.4.10/conf
export HBASE_HOME=/opt/module/hbase

④将jdbc驱动拷贝到sqoop/lib/目录下
cp mysql-connector-java-5.1.27-bin.jar 到 /sqoop/lib/目录下

四、验证sqoop

使用一个command命令检查sqoop是否安装完成
bin/sqoop help
出现一下内容便是安装完成:
sqoop入门简介 | 安装部署 | sqoop案例展示
测试是否能连接上mysql数据库

bin/sqoop list-databases --connect jdbc:mysql://bigdata01:3306/ --username root --password 123456

如果连接成功会获取到当前mysql数据库中的数据库
sqoop入门简介 | 安装部署 | sqoop案例展示

sqoop常用命令

sqoop import 导入
--connect jdbc:mysql://127.0.0.1:3306/$db_name 连接数据库
--username root 数据库用户名  
--password root 数据库密码
--target-dir /origin_data/$db_name/db/$1/$db_date HDFS地址
--table db_table 源头数据表
--delete-target-dir HDFS地址存在删除
--num-mappers $2 \--split-by $3 maptask数量
--input-null-string '\\N' 空值转换
--input-null-non-string '\\N' 非空字符串替换
--fields-terminated-by "\t" 字符串分割
--query "$4"' and $CONDITIONS;'
-hive-home <dir> 重写$HIVE_HOME
-hive-import 插入数据到hive当中,使用hive的默认分隔符
-hive-overwrite 重写插入
-create-hive-table 建表,如果表已经存在,该操作会报错
-hive-table <table-name> 设置到hive当中的表名
-hive-drop-import-delims 导入到hive时删除 \n, \r, and \0001
-hive-delims-replacement 导入到hive时用自定义的字符替换掉 \n, \r, and \0001
-hive-partition-key hive分区的key
-hive-partition-value <v> hive分区的值
-map-column-hive <map> 类型匹配,sql类型对应到hive类型

sqoop案例

一、基础操作

  1. 列出MySQL中有哪些数据库

    bin/sqoop list-databases --connect jdbc:mysql://bigdata01:3306/ --username root --password 123456
    

    结果:sqoop入门简介 | 安装部署 | sqoop案例展示

  2. 列出MySQL中test数据库下有哪些表

    bin/sqoop list-tables --connect jdbc:mysql://bigdata01:3306/test --username root --password 123456
    

    结果:sqoop入门简介 | 安装部署 | sqoop案例展示

  3. 在hive中etl数据库下创建一张跟mysql中一模一样的表

    bin/sqoop create-hive-table --connect jdbc:mysql://bigdata01:3306/test --username root --password 123456 --table student1 --hive-table etl.student1_hive 
    

    结果:
    sqoop入门简介 | 安装部署 | sqoop案例展示
    表结构与mysql中的student1完全相同
    sqoop入门简介 | 安装部署 | sqoop案例展示

二、导入数据操作

导入数据指的是从非大数据平台(EDBMS)将数据同步到大数据平台(HDFS、Hive、HBASE等),关键字import

  1. MySQL到HDFS
    1.1、准备数据表
    首先在mysql中创建一张表

    CREATE TABLE `student1` (
      `id` int(11) NOT NULL,
      `name` varchar(32) NOT NULL,
      `sex` varchar(4) NOT NULL,
      `age` int(11) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

    向表中插入数据

    insert  into `student1`(`id`,`name`,`sex`,`age`) values (1,'sda','男',12),(2,'efa','女',15),(3,'nnc','女',19),(4,'fri','女',35),(5,'ethan','男',18),(6,'徐象','男',98),(7,'学习','女',18);
    

    sqoop入门简介 | 安装部署 | sqoop案例展示

    1.2、导入数据
    1.2.1、 全表导入到HDFS

    bin/sqoop import \
    --connect jdbc:mysql://bigdata01:3306/test \
    --username root \
    --password 123456 \
    --table student1 \
    --target-dir /test/ \
    --delete-target-dir \
    --fields-terminated-by "\t" \
    --num-mappers 1
    

    结果
    sqoop入门简介 | 安装部署 | sqoop案例展示
    批量导入可以使用shell脚本,我这里仅提供一个范例,需要的同学自行修改脚本内容,并且才去的是全量导入方式,如果只需要进行增量或者变化量的导入此脚本不适用。
    批量导入十张表脚本:

    #! /bin/bash
    
    sqoop=/opt/module/sqoop/bin/sqoop
    #创建一个存放mysql表名的数组
    tables=(activity_info activity_order activity_rule activity_sku base_category1 base_province base_region comment_info holiday_info date_info)
    #循环遍历执行导入数据
    for i in ${tables[@]}
    do
    {
    	$sqoop import \
    	--connect jdbc:mysql://bigdata01:3306/gmall \
    	--username root \
    	--password 123456 \
    	--table $i  \
    	--num-mappers 1 \
    	--hive-import \
    	--fields-terminated-by "\t" \
    	--hive-overwrite \
    	--hive-table etl.$i
    }
    done
    
    

1.2.2、 导入指定的列到HDFS --columns
bash bin/sqoop import \ --connect jdbc:mysql://bigdata01:3306/test \ --username root \ --password 123456 \ --table student1 \ --columns id,name,sex \ --target-dir /test/student1 \ --delete-target-dir \ --fields-terminated-by "\t" \ --num-mappers 1 \ --split-by id
结果:
sqoop入门简介 | 安装部署 | sqoop案例展示
1.2.3、 导入指定条件的数据到HDFS --where
内容:从student1表中查询出学生中年龄大于18岁的学生,并导入到HDFS中
bash bin/sqoop import \ --connect jdbc:mysql://bigdata01:3306/test \ --username root \ --password 123456 \ --table student1 \ --where 'age>18 and sex="男"' \ --target-dir /test/student1 \ --delete-target-dir \ --fields-terminated-by "\t" \ --num-mappers 1 \ --split-by id
结果:
sqoop入门简介 | 安装部署 | sqoop案例展示
1.2.4、将查询结果导入到HDFS
内容:从student1表中查询出学生中年龄小于等于25的学生,并导入到HDFS中
注意:如果query后使用的是双引号,则$CONDITIONS前必须加转移符,防止shell识别为自己的变量。
bash bin/sqoop import \ --connect jdbc:mysql://bigdata01:3306/test \ --username root \ --password 123456 \ --query "select * from student1 where \$CONDITIONS and age <= 25" \ --target-dir /test/student1 \ --delete-target-dir \ --fields-terminated-by "\t" \ --num-mappers 1 \ --split-by id
结果:
sqoop入门简介 | 安装部署 | sqoop案例展示

  1. MySQL到Hive
    首先要启动hive元数据服务
    将MySQL中的test表导入到hive中

    bin/sqoop import \
    --connect jdbc:mysql://bigdata01:3306/test\
    --username root \
    --password 123456 \
    --table student1\
    --num-mappers 1 \
    --hive-import \
    --fields-terminated-by "\t" \
    --hive-overwrite \
    --hive-table student1
    

    结果:
    sqoop入门简介 | 安装部署 | sqoop案例展示
    注意:该过程分为两步,第一步将数据导入到HDFS,第二步将导入到HDFS的数据迁移到Hive仓库

  2. MySQL到HBase
    首先要启动HBASE服务。同时在HBASE中手动创建表,因为部分版本原因,可能导致sqoop不会在HBASE中自动创建表格
    3.1 在HBASE中创建student1_hbase表
    sqoop入门简介 | 安装部署 | sqoop案例展示
    3.2 将mysql中的数据同步到HBASE中

    bin/sqoop import \
    --connect jdbc:mysql://bigdata01:3306/test \
    --username root \
    --password 123456 \
    --table student1 \
    --where 'id >= 5' \
    --hbase-create-table \
    --hbase-table "student1_hbase" \
    --hbase-row-key "id" \
    --column-family "info" \
    --num-mappers 1 \
    --split-by id
    

    结果:
    sqoop入门简介 | 安装部署 | sqoop案例展示

三、导出数据操作

指定是将数据从大数据平台向非大数据平台同步数据。关键字export

  1. 从Hive/HDFS导出数据到MySQL
    hive的数据存储在hdfs,因此我们从hive导出到mysql的时候导的路径是hdfs上数据文件的位置。

     bin/sqoop export \
    --connect "jdbc:mysql://bigdata01:3306/etl?useUnicode=true&characterEncoding=utf-8" \
    --username root \
    --password 123456 \
    --table grade \
    --num-mappers 1 \
    --export-dir /user/hive/warehouse/etl.db/grade/ \
    --input-fields-terminated-by "\t"
    
    

    sqoop入门简介 | 安装部署 | sqoop案例展示文章来源地址https://www.toymoban.com/news/detail-443865.html

到了这里,关于sqoop入门简介 | 安装部署 | sqoop案例展示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 图数据库Neo4j——Neo4j简介、数据结构 & Docker版本的部署安装 & Cypher语句的入门

    MySQL是一种开源的关系型数据库管理系统,使用SQL作为其查询语言,常见的关系型数据库有MySQL、Oracle、SQL Server、PostgreSQL等。相关博客文章如下: 【合集】MySQL的入门进阶强化——从 普通人 到 超级赛亚人 的 华丽转身 PostgreSQL数据库——Docker版本的postgres安装 Navicat连接方式

    2024年02月06日
    浏览(58)
  • 【MyBatis-Plus】入门案例与简介

    1. 入门案例 MybatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提供效率。 开发方式 基于MyBatis使用MyBatisPlus 基于Spring使用MyBatisPlus 基于SpringBoot使用MyBatisPlus SpringBoot刚刚我们学习完成,它能快速构建Spring开发环境用以整合其他技术,使用起来是非常简

    2024年02月10日
    浏览(41)
  • 【Unity ShaderGraph】| Shader Graph入门介绍 | 简介 | 配置环境 | 窗口介绍 | 简单案例

    前言 Unity2018版本之后推出了一款名为 Shader Graph 的可编程渲染管线工具。 这个工具可以通过可视化界面拖拽来实现着色器的创建和编辑,大大简化了着色器的制作过程,同时着色效果编译显示也快。 下面就来介绍一下Shader Graph的基本信息及使用方法,上手非常简单,一起来

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

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

    2024年02月05日
    浏览(34)
  • k8s的安装部署,详细过程展示(保姆级安装教程)

    k8s应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源,而且程序之间容易产生影响 虚拟化

    2024年04月25日
    浏览(36)
  • 大数据技术——Flume简介&安装配置&使用案例

        Flume是一种 可配置、高可用 的 数据采集 工具,主要用于采集来自各种流媒体的数据(Web服务器的日志数据等)并传输到集中式数据存储区域。     Flume 支持在日志系统中定制 各种数据发送方 ,用于收集数据;并且可以对数据进行简单处理,将其写到可定制的各种数

    2024年02月08日
    浏览(36)
  • LLMs:Text generation web UI/text-generation-webui(一款帮助LLMs实现本地化部署和微调的GUI界面式工具,非CLI式)的简介、安装、使用方法之详细攻略

    LLMs:Text generation web UI/text-generation-webui(一款帮助LLMs实现本地化部署和模型微调的GUI界面式工具,非CLI式)的简介、安装、使用方法之详细攻略 目录 Text generation web UI的简介 Text generation web UI的安装 第一步、安装程序

    2024年02月07日
    浏览(37)
  • 【监控系统】可视化工具Grafana简介及容器化部署实战

    1.什么是Grafana 官网地址:https://grafana.com/ Grafana用Go语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能。支持快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件。 数据源广: Graphite,InfluxDB,Open

    2024年02月15日
    浏览(36)
  • 【Spring教程30】Spring框架实战:从零开始学习SpringMVC 之 Rest风格简介与RESTful入门案例

    欢迎大家回到《Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》,本文的上一篇为《SpringMVC 之 服务器响应》 REST(Representational State Transfer),表现形式状态转

    2024年02月04日
    浏览(50)
  • Sqoop 从入门到精通

    概述 Sqoop是Hadoop和关系数据库服务器之间传送数据的一种工具。它是用来从关系数据库如:MySQL,Oracle到Hadoop的HDFS,并从Hadoop的文件系统导出数据到关系数据库。 传统的应用管理系统,也就是与关系型数据库的使用RDBMS应用程序的交互,是产生大数据的来源之一。这样大的数

    2024年02月05日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包