Hadoop-sqoop

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

sqoop

1. Sqoop简介及原理

简介:

Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysq1.postgresql..)间进行数据的传递,可以将一个关系型数据库(例如: MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop 的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

Sqoop项目开始于2009年,最早是作为Hadoop 的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个Apache项目。v

Sqoop2的最新版本是1.99.7。请注意,2与1不兼容,且特征不完整,它并不打算用于生产部署。

原理:

将导入或导出命令翻译成mapreduce程序来实现。

在翻译出的mapreduce中主要是对inputformat和 outputformat进行定制。

2.sqoop安装部署

解压、改名

[root@kb129 install]# tar -xvf ./sqoop-1.4.7.tar.gz -C /opt/soft/

[root@kb129 soft]# mv sqoop-1.4.7/ sqoop147

拷贝配置文件

[root@kb129 conf]# pwd

/opt/soft/sqoop147/conf

[root@kb129 conf]# cp sqoop-env-template.sh sqoop-env.sh

编辑配置文件

[root@kb129 conf]# vim ./sqoop-env.sh

export HADOOP_COMMON_HOME=/opt/soft/hadoop313

export HADOOP_MAPRED_HOME=/opt/soft/hadoop313

export HBASE_HOME=/opt/soft/hbase235

export HIVE_HOME=/opt/soft/hive312

export HIVE_CONF_DIR=/opt/soft/hive312/conf

export ZOOCFGDIR=/opt/soft/zk345/conf

解压

[root@kb129 install]# tar -xvf ./sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C ./

拷贝jar包至sqoop147根路径下

[root@kb129 sqoop-1.4.7.bin__hadoop-2.6.0]# cp ./sqoop-1.4.7.jar /opt/soft/sqoop147/

继续拷贝jar包

[root@kb129 lib]# pwd

/opt/soft/sqoop147/lib

[root@kb129 lib]# cp /opt/soft/hive312/lib/hive-common-3.1.2.jar ./

[root@kb129 lib]# cp /opt/install/sqoop-1.4.7.bin__hadoop-2.6.0/lib/avro-1.8.1.jar ./

[root@kb129 lib]# cp /opt/soft/hive312/lib/mysql-connector-java-8.0.29.jar ./

拷贝完毕:

Hadoop-sqoop,hadoop,sqoop,大数据

配置sqoop环境变量并source

#SQOOP

export SQOOP_HOME=/opt/soft/sqoop147

export PATH=$SQOOP_HOME/bin:$PATH

验证安装

[root@kb129 lib]# sqoop version

Hadoop-sqoop,hadoop,sqoop,大数据

3.sqoop操作基本命令

3.1  基本操作:参考 https://www.cnblogs.com/qingyunzong/p/8807252.html

查看sqoop一般操作命令

[root@kb129 lib]# sqoop help

连接mysql命令(\代表换行输入)

[root@kb129 lib]# sqoop list-databases \

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

 --username root \

 --password 123456

Hadoop-sqoop,hadoop,sqoop,大数据

查看sql50数据库内的表

[root@kb129 lib]# sqoop list-tables --connect jdbc:mysql://kb129:3306/sql50 --username root --password 123456

Hadoop-sqoop,hadoop,sqoop,大数据

在hive默认库中创建表(来源mysql库中的help_keyword表,仅复制表结构)

[root@kb129 lib]# sqoop create-hive-table \

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

--username root --password 123456 \

--table help_keyword \

--hive-table hk

3.2  Sqoop import

1、从Mysql导入到HDFS中

1)导入mysql库中的help_keyword的数据到HDFS默认路径上/user/root

sqoop import --connect jdbc:mysql://kb129:3306/mysql --username root --password 123456 --table help_keyword -m 1

导入sql50库中的student表的数据到HDFS默认路径上

sqoop import --connect jdbc:mysql://kb129:3306/sql50 --username root --password 123456 --table student -m 1

2)导入: 指定分隔符,指定导入路径

sqoop import --connect jdbc:mysql://kb129:3306/sql50 --username root --password 123456 --table student --target-dir /kb23/student --fields-terminated-by '\t' -m 1

3)导入数据:带where条件

sqoop import --connect jdbc:mysql://kb129:3306/mysql --username root --password 123456 --where "name='STRING'" --table help_keyword --target-dir /kb23/hk1 -m 1

4)导入:指定自定义查询SQL

sqoop import --connect jdbc:mysql://kb129:3306/mysql --username root --password 123456 --target-dir /kb23/hk2 --query 'select help_keyword_id,name from help_keyword where $CONDITIONS and name="STRING"' --split-by help_keyword_id --fields-terminated-by ':' -m 4

在以上需要按照自定义SQL语句导出数据到HDFS的情况下:

(1)引号问题,要么外层使用单引号,内层使用双引号,$CONDITIONS的$符号不用转义, 要么外层使用双引号,那么内层使用单引号,然后$CONDITIONS的$符号需要转义

(2)自定义的SQL语句中必须带有WHERE \$CONDITIONS

2、把MySQL数据库中的表数据导入到Hive中

1)Sqoop 导入关系型数据到 hive 的过程是先导入到 hdfs,然后再 load 进入 hive

普通导入:数据存储在默认的default hive库中,表名就是对应的mysql的表名

sqoop import --connect jdbc:mysql://kb129:3306/mysql --username root --password 123456 --table help_keyword --hive-import -m 1

导入过程

第一步:导入mysql.help_keyword的数据到hdfs的默认路径

第二步:自动仿造mysql.help_keyword去创建一张hive表, 创建在默认的default库中

第三步:把临时目录中的数据导入到hive表中

2)指定行分隔符和列分隔符,指定hive-import,指定覆盖导入,指定自动创建hive表,指定表名,指定删除中间结果数据目录

sqoop import  \

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

--username root  \

--password 123456  \

--table help_keyword  \

--hive-import  \

--hive-overwrite  \

--create-hive-table  \

--delete-target-dir \

--hive-database  kb23db \

--hive-table new_help_keyword

3)增量导入(追加)

(执行增量导入之前,先清空hive数据库中的my_help_keyword表中的数据,方便查看)

从原表501行数据开始到最后,追加到目标表中

sqoop import  \

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

--username root  \

--password 123456  \

--table help_keyword  \

--hive-import  \

--incremental  append  \

--hive-database kb23db \

--check-column  help_keyword_id \

--last-value 500  \

-m 1

在实际工作当中,数据的导入,很多时候都是只需要导入增量数据即可,并不需要将表中的数据每次都全部导入到 hive 或者 hdfs 当中去这样会造成数据重复的问题。因此一般都是选用一些字段进行增量的导入, sqoop 支持增量的导入数据。

-- 所谓的增量数据指的是上次至今中间新增加的数据

-- sqoop支持两种模式的增量导入

append追加 根据数值类型字段进行追加导入, 大于指定的last-value

lastmodified 根据时间戳类型字段进行追加, 大于等于指定的last-value

注意在lastmodified模式下,还分为两种情形: append merge-key

增量导入是仅导入新添加的表中的行的技术。

--check-column(col)

用来指定一些列,这些列在增量导入时用来检查这些数据是否作为增量数据进行导入,和关系型数据库中的自增字段及时间戳类似。

注意:这些被指定的列的类型不能使任意字符类型,如 char、varchar 等类型都是不可以的,同时-- check-column 可以去指定多个列。

--incremental(mode)

append:追加,比如对大于 last-value 指定的值之后的记录进行追加导入。

lastmodified:最后的修改时间,追加 last-value 指定的日期之后的记录。

--last-value(value)

指定自从上次导入后列的最大值(大于该指定的值),也可以自己设定某一值。

3、把MySQL数据库中的表数据导入到hbase

3.3  Sqoop export

参考小白篇(十二):sqoop export指令实操_belialxing的博客-CSDN博客

https://blog.csdn.net/d905133872/article/details/129421948?spm=1001.2014.3001.5502

1.将hive中的表数据导入到mysql中

(1)

-- hive创建一张表,默认是textfile类型的

create table if not exists kb23db.export_txt_demo

(

name    string,

address string

);

-- 创建测试数据

insert into kb23db.export_txt_demo values('测试1','上海');

insert into kb23db.export_txt_demo values('测试2','北京');

(2)

-- 创建接收表

create table sql50.export_txt_demo

(

name varchar(10),

address varchar(10)

);

sqoop export --connect 'jdbc:mysql://kb129:3306/sql50' \

--username 'root' \

--password '123456' \

--table 'export_txt_demo' \

--export-dir  /hive312/warehouse/kb23db.db/export_txt_demo \

--input-fields-terminated-by '\001' \

--input-null-string '\\N' \

--input-null-non-string '\\N'

 

参数说明:

--connect '数据库连接' \

--username '数据库账号' \

--password '数据库密码' \

--table '数据库表名' \

--export-dir  集群hdfs中导出的数据目录 \

--input-fields-terminated-by '分隔符,textfile类型默认\001' \

--input-null-string '空值处理:\\N' \

--input-null-non-string '空值处理:\\N'文章来源地址https://www.toymoban.com/news/detail-731498.html

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

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

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

相关文章

  • Hadoop和关系型数据库间的数据传输工具——Sqoop

    1.1、产生背景 1.2、Sqoop是什么 Sqoop是一个用于 Hadoop 和 结构化数据存储 (如关系型数据库)之间进行高效传输大批量数据的工具。它包括以下两个方面: 可以使用Sqoop将数据从 关系型数据库管理系统(如MySQL)导入到Hadoop系统 (如HDFS、Hive、HBase)中 将数据从Hadoop系统中抽取并导

    2023年04月08日
    浏览(115)
  • Hadoop3.0大数据处理学习4(案例:数据清洗、数据指标统计、任务脚本封装、Sqoop导出Mysql)

    直播公司每日都会产生海量的直播数据,为了更好地服务主播与用户,提高直播质量与用户粘性,往往会对大量的数据进行分析与统计,从中挖掘商业价值,我们将通过一个实战案例,来使用Hadoop技术来实现对直播数据的统计与分析。下面是简化的日志文件,详细的我会更新

    2024年02月08日
    浏览(48)
  • Hadoop-sqoop

    1. Sqoop简介及原理 简介: Sqoop 是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysq1.postgresql..)间进行数据的传递,可以将一个关系型数据库(例如: MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop 的HDFS中,也可以将HDFS的数据导进到关系型数据库中。 Sqoop 项目开始于2009年,

    2024年02月07日
    浏览(32)
  • hadoop3 使用sqoop 1.4.7 解决方案

    sqoop功能已经非常完善了,没有什么可以更新的了,官方停止更新维护了。因此官方集成的hadoop包停留在了2.6.0版本,在hadoop3.3.0版本会提示类版本过低错误,但纯净版sqoop有缺少必须的第三方库,所以将这两个包下载下来,提取部分sqoop_hadoop2.6.0版本的jar包放到纯净版sqoop的lib目

    2024年02月04日
    浏览(36)
  • [sqoop]hive3.1.2 hadoop3.1.1安装sqoop1.4.7

    Hadoop3.2.4+Hive3.1.2+sqoop1.4.7安装部署_hadoop sqoop安装_alicely07的博客-CSDN博客 sqoop-env.sh 末尾添加 环境变量 先创建目录,解决警告:accumulo does not exist! (1)添加jdbc驱动包:将MySQL数据库的JDBC驱动包mysql-connector-java-5.1.37.jar添加到Sqoop安装目录的lib目录中。 (2)删除Sqoop安装目录的

    2024年02月07日
    浏览(59)
  • 基于Hadoop的MapReduce网站日志大数据分析(含预处理MapReduce程序、hdfs、flume、sqoop、hive、mysql、hbase组件、echarts)

    需要本项目的可以私信博主!!! 本项目包含:PPT,可视化代码,项目源码,配套Hadoop环境(解压可视化),shell脚本,MapReduce代码,文档以及相关说明教程,大数据集! 本文介绍了一种基于Hadoop的网站日志大数据分析方法。本项目首先将网站日志上传到HDFS分布式文件系统

    2024年02月16日
    浏览(61)
  • Hadoop大数据处理技术-初步了解Hadoop

    ​ 云计算,听起来就像是什么仙气十足的东西,但其实它并不神秘。简单来说,云计算就是通过网络(通常是互联网)来提供各种计算服务,包括存储、数据库、软件、网络等,而不是依靠个人计算机或本地服务器来处理。想象一下,就好像你可以通过互联网租用一台强大的

    2024年04月22日
    浏览(36)
  • 什么是大数据?Hadoop概述、Hadoop基础

    1.1 大数据的概念 大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合。 通俗来说就是海量的数据,但是也可泛指大数据技术、大数据行业、大数据应用等。 大数据技术,主要解决 海量数据的存储 和 海量数据的分析计算 问题。 1

    2024年02月08日
    浏览(58)
  • hadoop大数据原理与应用-----初识hadoop习题集

    Hadoop的配置文件主要是`hadoop-env.sh`和`yarn-env.sh`,这两个文件位于Hadoop安装目录的`etc/hadoop`目录下。 1. `hadoop-env.sh`:在这个文件中,您可以配置Hadoop的环境变量,包括JAVA_HOME。通常,在这个文件中会有一个关于JAVA_HOME的配置项,您可以直接修改这个配置项来指定Java的安装路径

    2024年04月26日
    浏览(38)
  • 【大数据之Hadoop】三十七、Hadoop HA高可用

      实现高可用最关键的策略是消除单点故障。HA分成各个组件的HA机制:HDFS的HA和YARN的HA。   Hadoop2.0之前,在HDFS集群中NameNode存在单点故障(SPOF)。 NameNode主要在以下两个方面影响HDFS集群: (1)NameNode机器发生意外,如宕机,集群将无法使用,直到管理员重启。 (2)

    2024年02月12日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包