Sqoop的安装与使用详细教程

 更新时间:2021年5月19日 16:07  
Sqoop是一款开源的工具,主要用于在Hadoop与传统数据库间进行数据的传递,这篇文章主要介绍了Sqoop的安装与使用详细教程,需要的朋友可以参考下

本文我们介绍一个非常好用的数据传输工具——Sqoop。Sqoop是一款开源的工具,主要用于在Hadoop与传统数据库间进行数据的传递,可以将一个关系型数据库(例如:MySQL,Oracle,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个Apache项目。关注专栏《破茧成蝶——大数据篇》,查看更多相关的内容~

一、Sqoop的安装

1.1 下载上传安装包

1、首先下载安装包,点击此处进行下载。

2、将下载的安装包上传到集群中,解压到相关目录并重命名。

tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C ../modules/

mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop

1.2 修改配置文件

1、首先重命名sqoop-env-template.sh文件

[[email protected] conf]# mv sqoop-env-template.sh sqoop-env.sh

2、在sqoop-env.sh中添加各组件的路径

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

1.3 拷贝JDBC驱动

拷贝MySQL的驱动包到Sqoop的lib目录下:

[[email protected] software]# cp ./mysql-connector-java-5.1.47.jar /opt/modules/sqoop/lib/

1.4 验证Sqoop是否安装成功

bin/sqoop help

出现上图的内容说明安装成功。

二、Sqoop的导入导出

2.1 测试连接数据库

bin/sqoop list-databases --connect jdbc:mysql://master:3306/ --username root --password [email protected]

2.2 MySQL导入数据到HDFS

1、首先在MySQL数据库(xzw)中新建一张people表,如下所示:

create table people(id int(4) primary key not null auto_increment, name varchar(255), sex varchar(255));
insert into people(name, sex) values('xzw', 'Male');
insert into people(name, sex) values('fq', 'FeMale');

2、全量导入

bin/sqoop import \
--connect jdbc:mysql://master:3306/xzw \
--username root \
--password [email protected] \
--table people \
--target-dir /user/sqoop/people \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by ","

使用如下命令查看导入的结果:

3、查询导入

bin/sqoop import \
--connect jdbc:mysql://master:3306/xzw \
--username root \
--password [email protected] \
--target-dir /user/sqoop/people \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "," \
--query 'select name,sex from people where id <=1 and $CONDITIONS;'

查看导入结果:

这里需要注意的是,如果query后使用的是双引号,则$CONDITIONS前必须加转义符\,防止shell识别为自己的变量。如果使用的是单引号,则不需要加。

4、导入指定列

bin/sqoop import \
--connect jdbc:mysql://master:3306/xzw \
--username root \
--password [email protected] \
--target-dir /user/sqoop/people \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "," \
--columns id,sex \
--table people

查看结果:

这里需要注意的是,columns中如果涉及到多列,用逗号分隔,分隔时不要添加空格。

5、使用sqoop关键字筛选查询导入数据

bin/sqoop import \
--connect jdbc:mysql://master:3306/xzw \
--username root \
--password [email protected] \
--target-dir /user/sqoop/people \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "," \
--table people \
--where "id=1"

查看结果:

2.3 MySQL导入数据到Hive

bin/sqoop import \
--connect jdbc:mysql://master:3306/xzw \
--username root \
--password [email protected] \
--table people \
--num-mappers 1 \
--hive-import \
--fields-terminated-by "," \
--hive-overwrite \
--hive-table hive_people

该过程分为两步,第一步将数据导入到HDFS,第二步将导入到HDFS的数据迁移到Hive仓库。这里需要注意的是,Hive中的表不需要提前创建,Sqoop会在导数据的过程中自动创建表。

2.4 MySQL导入数据到HBase

bin/sqoop import \
--connect jdbc:mysql://master:3306/xzw \
--username root \
--password [email protected] \
--table people \
--columns "id,name,sex" \
--column-family "info" \
--hbase-create-table \
--hbase-row-key "id" \
--hbase-table "hbase_people" \
--num-mappers 1 \
--split-by id

这里需要注意的是,需要提前将HBase表建好:

create 'hbase_people','info'

2.5 HDFS导出数据到MySQL

bin/sqoop export \
--connect jdbc:mysql://master:3306/xzw \
--username root \
--password [email protected] \
--table people \
--num-mappers 1 \
--export-dir /user/sqoop/people \
--input-fields-terminated-by ","

这里需要注意的是,如果MySQL中不存在表,不会自动创建,简言之就是在执行导出之前需要在MySQL中创建好表。

三、Sqoop脚本打包

我们使用opt格式的文件打包Sqoop命令,然后执行,具体如下。

首先在Sqoop的安装目录新建目录opt,并编写脚本如下:

export
--connect
jdbc:mysql://master:3306/xzw
--username
root
--password
[email protected]
--table
people
--num-mappers
1
--export-dir
/user/sqoop/people
--input-fields-terminated-by
","

然后使用如下命令执行脚本:

bin/sqoop --options-file opt/HDFSToMySQL.opt

到此这篇关于Sqoop的安装与使用详细教程的文章就介绍到这了,更多相关Sqoop安装与使用内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

到此这篇关于Sqoop的安装与使用详细教程的文章就介绍到这了,更多相关Sqoop安装与使用内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

相关文章

  • PHP7快速编译安装的步骤

    编译安装非常的简单了我们现在的php版本已经到了php7了,下文小编来为各位介绍一篇关于PHP7快速编译安装的步骤,希望文章能够帮助到各位。 一、安装必要一些依赖 yum...2016-11-25
  • 图解PHP使用Zend Guard 6.0加密方法教程

    有时为了网站安全和版权问题,会对自己写的php源码进行加密,在php加密技术上最常用的是zend公司的zend guard 加密软件,现在我们来图文讲解一下。 下面就简单说说如何...2016-11-25
  • PHP编译安装后PHP-FPM使用笔记

    PHP-FPM我们相信各位用高版本的php经常使用到了,下面整理了一些关于PHP-FPM的笔记,有兴趣的可进来看看。 今天赶上了123System OPenVZ VPS全场半价的机会,购入了一...2016-11-25
  • php语言中使用json的技巧及json的实现代码详解

    目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它。我写过一篇《数据类型和JSON格式》,探讨它的设计思想。今天,我想总结一下PHP语言对它的支持,这是开发互联网应用程序(特别是编写API)必须了解的知识...2015-10-30
  • PHP实现无限级分类(不使用递归)

    无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
  • 使用percona-toolkit操作MySQL的实用命令小结

    1.pt-archiver 功能介绍: 将mysql数据库中表的记录归档到另外一个表或者文件 用法介绍: pt-archiver [OPTION...] --source DSN --where WHERE 这个工具只是归档旧的数据,不会对线上数据的OLTP查询造成太大影响,你可以将...2015-11-24
  • php类的使用实例教程

    php类的使用实例教程 <?php /** * Class program for yinghua05-2 * designer :songsong */ class Template { var $tpl_vars; var $tpl_path; var $_deb...2016-11-25
  • 双冒号 ::在PHP中的使用情况

    前几天在百度知道里面看到有人问PHP中双冒号::的用法,当时给他的回答比较简洁因为手机打字不大方便!今天突然想起来,所以在这里总结一下我遇到的双冒号::在PHP中使用的情况!双冒号操作符即作用域限定操作符Scope Resoluti...2015-11-08
  • 使用GruntJS构建Web程序之构建篇

    大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
  • Centos中彻底删除Mysql(rpm、yum安装的情况)

    我用的centos6,mysql让我整出了各种问题,我想重装一个全新的mysql,yum remove mysql-server mysql之后再install并不能得到一个干净的mysql,原来的/etc/my.cnf依然没变,datadir里面的数据已没有任何变化,手动删除/etc/my.cn...2015-03-15
  • jQuery 1.9使用$.support替代$.browser的使用方法

    jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support 。 在更新的 2.0 版本中,将不再支持 IE 6/7/8。 以后,如果用户需要支持 IE 6/7/8,只能使用 jQuery 1.9。 如果要全面支持 IE,并混合...2014-05-31
  • 使用insertAfter()方法在现有元素后添加一个新元素

    复制代码 代码如下: //在现有元素后添加一个新元素 function insertAfter(newElement, targetElement){ var parent = targetElement.parentNode; if (parent.lastChild == targetElement){ parent.appendChild(newEl...2014-05-31
  • PHP mysql与mysqli事务使用说明 分享

    mysqli封装了诸如事务等一些高级操作,同时封装了DB操作过程中的很多可用的方法。应用比较多的地方是 mysqli的事务。...2013-10-02
  • 如何使用php脚本给html中引用的js和css路径打上版本号

    在搜索引擎中搜索关键字.htaccess 缓存,你可以搜索到很多关于设置网站文件缓存的教程,通过设置可以将css、js等不太经常更新的文件缓存在浏览器端,这样访客每次访问你的网站的时候,浏览器就可以从浏览器的缓存中获取css、...2015-11-24
  • 安装和使用percona-toolkit来辅助操作MySQL的基本教程

    一、percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slave数据的一致性 有效地对记录进行归档 查找重复的索...2015-11-24
  • Node调试工具JSHint的安装及配置教程

    现在我们介绍一种在Node下检查简单错误的JS代码验证工具JSHint。  JSHint的具体介绍参考http://www.jshint.com/about/,说直白点儿,JSHint就是一个检查JS代码规范与否的工具,它可以用来检查任何(包括server端和client端...2014-05-31
  • 使用xampp搭建运行php虚拟主机的详细步骤

    最近,新装了xampp这么一个软件搭建自己的web开发环境,安装完毕自然要虚拟几个目录放自己的项目了,现将如何在xampp搭建的web服务器环境下新建虚拟主机的过程总结分享一下,大致过程分为三步,如下: 第一步: 用记事本打开C:/WIN...2015-10-23
  • 模板引擎smarty工作原理以及使用示例

    模板引擎是用于把模板文件和数据内容合并在一起的程序,便于网站开发有利于代码分离和维护,了解一个模板最好知道其工作原理,以便于实现一通万通。模板文件一般是HTML xml js等类型文件,如果不用模板引擎若要把数据显示在...2014-05-31
  • MySQL日志分析软件mysqlsla的安装和使用教程

    一、下载 mysqlsla [[email protected] tmp]# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz--19:45:45-- http://hackmysql.com/scripts/mysqlsla-2.03.tar.gzResolving hackmysql.com... 64.13.232.157Conn...2015-11-24
  • php使用APC实现实时上传进度条功能

    php不具备实时上传进度条功能,如果想有这种功能我们一般会使用ajax来实现,但是php提供了一个apc,它就可以与php配置实现上传进度条功能。 主要针对的是window上的应用。 1.服务器要支持apc扩展,没有此扩展的话,下载一个扩...2015-10-30