sqoop(sql-to-hadoop)   

Apache Sqoop是用来实现结构型数据(如关系数据库)和Hadoop之间进行数据迁移的工具。它充分利用了MapReduce的并行特点以批处理的方式加快数据的传输,同时也借助MapReduce实现了容错。

  可以把数据从hdfs倒到mysql
  也可以把数据从
  相当于把数据倒来倒去的工具,

sqoop支持的数据库:

Database

version

--direct support?

connect string matches

HSQLDB

1.8.0+

No

jdbc:hsqldb:*//

MySQL

5.0+

Yes

jdbc:mysql://

Oracle

10.2.0+

No

jdbc:oracle:*//

PostgreSQL

8.3+

Yes (import only)

jdbc:postgresql:/

配置

  1.开启zookeeper

  2.开启集群服务(hadoop等)
  3.上传sqoop并解压

  4.进入目录sqoop下的conf(cd sqoop-1.4.5-cdh5.3.6/conf/)

  5.cp sqoop-env-template.sh sqoop-env.sh

  6.rm -rf *.cmd

  7.修改sqoop-env.sh(HBASE暂时还没有学到,还没有配置,后续会配)

  8.拷贝jdbc驱动到sqoop的lib目录下

      (cp mysql-connector-java-5.1.27-bin.jar /opt/module/sqoop-1.4.5-cdh5.3.6/lib/)

  9.启动sqoop(在sqoop目录下)

    9.1 、bin/sqoop help

    9.2测试Sqoop是否能够连接成功( bin/sqoop list-databases --connect jdbc:mysql://hadoop201:3306/metastore --username root --password 123456)

      

案例

一.使用sqoop将mysql中的数据导入到HDFS

1.确定Mysql服务的正常开启

2.在Mysql中创建一张表

    

mysql -uroot -p

mysql> show databses;
mysql> create database company;
mysql> use company;
mysql> create table staff(id int(4) primary key not null auto_increment,name varchar(255) not null,sex varchar(255) not null);
mysql> show tables;
mysql> insert into staff(name, sex) values('Thomas', 'Male');

3.操作数据

  3.1RDBMS --> HDFS

  使用Sqoop导入数据到HDFS

    A、全部导入

      1.现在hadoop下创建个文件夹(bin/hdfs dfs -mkdir /user/company)

      2.进入sqoop目录,执行

bin/sqoop import --connect jdbc:mysql://hadoop201:3306/company --username root --password 123456 --table staff --target-dir /user/company --delete-target-dir --num-mappers 1 --fields-terminated-by "\t"

      也可以写成这种形式(\为未写完换行)

                bin/sqoop import \
--connect jdbc:mysql://hadoop201:3306/company \
--username root \
--password 123456 \
--table staff \
--target-dir /user/company \
--delete-target-dir \ (如果目录存在则删除目录)
--num-mappers 1 \ (用几个mapper跑这个任务)
--fields-terminated-by "\t" (用什么分割)

     3.查看(在hadoop目录下    bin/hdfs dfs -cat /user/company/*)

      

  B、根据查询语句结果导入

                 $ bin/sqoop import
--connect jdbc:mysql://hadoop201:3306/company
--username root
--password 123456
--target-dir /user/company
--delete-target-dir
--num-mappers 1
--fields-terminated-by "\t"
--query 'select name,sex from staff where id >= 2 and $CONDITIONS;'

  C、导入指定列

                             $ bin/sqoop import
--connect jdbc:mysql://hadoop201:3306/company
--username root
--password 123456
--target-dir /user/company
--delete-target-dir
--num-mappers 1
--fields-terminated-by "\t"
--columns id, sex
--table staff

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

                 $ bin/sqoop import
--connect jdbc:mysql://hadoop201:3306/company
--username root
--password 123456
--target-dir /user/company
--delete-target-dir
--num-mappers 1
--fields-terminated-by "\t"
--table staff
--where "id=3"

  3.2RDBMS --> Hive

    1.在hive中创建表(不需要提前创建表,会自动创建)

      1.1 在hive目录下  bin/hive

      1.2

hive (company)> create table staff_hive(id int, name string, sex string) row format delimited fields terminated by '\t';

  1.3向hive中导入数据

                $ bin/sqoop import
--connect jdbc:mysql://hadoop201:3306/company
--username root
--password 123456
--table staff
--num-mappers 1
--hive-import
--fields-terminated-by "\t"
--hive-overwrite
--hive-table company.staff_hive

   3.3Hive/HDFS --> MYSQL

  1、在Mysql中创建一张表(create table student(id int(4) primary key not null auto_increment,name varchar(255) not null,sex varchar(255) not null,class varchar(255) not null);)

  2.


                $ bin/sqoop export
--connect jdbc:mysql://hadoo201:3306/company
--username root
--password 123456
--table staff_mysql
--num-mappers 1
--export-dir /user/hive/warehouse/company.db/staff_hive
--input-fields-terminated-by "\t"

sqoop简单配置与使用的更多相关文章

  1. sqoop简单import使用

    一.sqoop作用? sqoop是一个数据交换工具,最常用的两个工具是导入导出. 导入导出的参照物是hadoop,向hadoop导数据就是导入. 二.sqoop的版本? sqoop目前有两个版本,1. ...

  2. 小丁带你走进git世界一-git简单配置

    小丁带你走进git世界一-git简单配置 1.github的简单配置 配置提交代码的信息,例如是谁提交的代码之类的. git config  –global user.name BattleHeaer ...

  3. 以实际的WebGIS例子探讨Nginx的简单配置

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 以实际项目中的一个例子来详细讲解Nginx中的一般配置,其中涉 ...

  4. CentOS 7.0 使用 yum 安装 MariaDB 与 MariaDB 的简单配置

    1.安装MariaDB 安装命令 yum -y install mariadb mariadb-server 安装完成MariaDB,首先启动MariaDB,两条命令都可以 systemctl sta ...

  5. ssm简单配置

    MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架. MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获. MyBatis 只使用简单的XML 和注解来配置和映射 ...

  6. 安装MariaDB和简单配置

    1.安装MariaDB 安装命令 yum -y install mariadb mariadb-server 安装完成MariaDB,首先启动MariaDB systemctl start maria ...

  7. BIND的进程一:DNS简单配置与的主从配置

    DNS的简单配置和DNS的主从配置   摘要:DNS(Domain-Name Server) ,DNS的服务起到的作用就是名称解析,在网络通讯来说计算机与计算机是通过IP地址相互通信的, 当是IP地址 ...

  8. 转-squid介绍及其简单配置

    本文原始出处:http://linuxme.blog.51cto.com/1850814/372960 1.Squid是什么? Squid中文权威指南:http://zyan.cc/book/squi ...

  9. Linux中vim的简单配置

    本文主要分享Linux中vim的简单配置 ★配置文件的位置     在目录/etc.下面,有个名为vimrc的文件,这就是系统中公共的vim配置文件,对所有用户都开放.而在每个用户的主目录下,都可以自 ...

随机推荐

  1. 关于 redis的操作

    1.修改配置文件 redis.conf是redis的配置文件,redis.conf在redis源码目录. 注意修改port作为redis进程的端口,port默认6379.如果需要搭建redis集群,千 ...

  2. Centos7.x gnome 桌面美化

    一.管理工具 gnome是通过gnome-tweak-tool(优化工具)来管理的,可以在左上角的应用程序->工具里找到. 也可以直接在终端输入gnome-tweak-tool来启动它.启动界面 ...

  3. Javascript高级编程学习笔记(12)—— 引用类型(1)Object类型

    前面的文章中我们知道JS中的值分为两种类型 基础类型的值和引用类型的值 基础类型的值我已经大概介绍了一下,今天开始后面几天我会为大家介绍一下引用类型的值 Object类型 对象是引用类型的值的实例,在 ...

  4. Javascript百学不厌 - this

    最近看了一本书,让自己的野路子走走正规路线 方法调用模式: 方法:当一个函数被保存为对象的一个属性时,我们称它为一个方法. var obj = { fun1: function() {this} // ...

  5. Java学习笔记54(反射详解)

    反射概念: java反射机制是在运行状态中,对于任意一个类,都能知道所有属性和方法 对于任意一个对象都能调用它的任意一个方法和属性,这种动态获取和调用的功能称为java的反射机制 实际作用: 已经完成 ...

  6. Linux链接脚本学习--lds

    一.概论 ld: GNU的链接器. 用来把一定量的目标文件跟档案文件链接在一起,并重新定位它们的数据,链接符号引用. 一般编译一个程序时,最后一步就是运行ld进行链接 每一个链接都被一个链接脚本所控制 ...

  7. java中微信统一下单采坑(app微信支付)

    app支付前java后台统一下单文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1 微信支付接口签名校验工具:https ...

  8. 欧拉函数(C语言实现)

    欧拉函数(Euler's totient function)是指小于n的正整数中与n互质的数的数目,用φ(n)表示.特别的,φ(1)=1: 例如:φ(10)=4:1 3 7 9与10互质. 公式:φ( ...

  9. [视频]K8飞刀 exploit管理功能 演示教程

    [视频]K8飞刀 exp管理功能 演示教程 链接: https://pan.baidu.com/s/1rYb3rh4od3j07TZAAq_smw 提取码: kksa

  10. Linux学习笔记之四————Linux常用命令之文件管理

    Linux命令——文件管理相关命令 <1>查看文件信息:ls ls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令. Linux文件或 ...