sqoop简介

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

  • sqoop1的最新版本是1.4.5,sqoop2的最新版本是1.99.3;1.99.3和1.4.5是不兼容的,并且功能尚未开发完成,还不适合在生产环境部署。

安装

  1. 下载1.4版本sqoop
  2. 解压
  3. 修改配置文件 & 拷贝MySQL驱动包至 /usr/local/sqoop/lib
sqoop-env.sh

#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/usr/local/hadoop/hadoop-2.6.5 #Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/usr/local/hadoop/hadoop-2.6.5 #set the path to where bin/hbase is available
export HBASE_HOME=/usr/local/hbase #Set the path to where bin/hive is available
export HIVE_HOME=/usr/local/hive/apache-hive-1.2.1-bin

数据导入

  1. MySQL ----> HDFS
  • 使用--target-dir指定导入数据目录,默认导入目录:/user/hadoop/table_name/
sqoop import \
--connect jdbc:mysql://node-1:3006/info\
--username root \
--password root \
--target-dir /user \
--table user --m 1 如果出现如下错误,请更换mysql驱动jar包.实测mysql-connector-5.1.8.jar无效,mysql-connector-java-5.1.41-bin.jar正常
ERROR manager.SqlManager: Error reading from database: java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@192d43ce is still active.
No statements may be issued when any streaming result sets are open and in use on a given connection.
Ensure that you have called .close() on any active streaming result sets before attempting more queries.
  1. MySQL ----> HIVE
  • 先将数据导入到HDFS上的 user_test_hive 目录,然后将此目录下的数据通过 load 命令导入到hive中,然后将对应的数据目录删除
  • 可以使用where语句,对导入的指定的数据进行导入
./sqoop import \
--connect jdbc:mysql://node-1:3006/info \
--username root \
--password root \
--table user_test \
--where "city = 'bj'" \
--target-dir /user_test_hive \
--hive-table user_test \
--hive-import --m 1 --query 'select id,name,age,city from user where id > 1000 and $CONDITIONS '

数据导出

  • 将数据从HDFS导出到MySQL中,导出前,目标表必须存在于目标数据库中
  • 默认操作是将文件中的数据使用insert语句插入到表中
  • 更新模式下,是生成update语句更新表

1.创建MySQL表

2.执行导出命令

sqoop export \
--connect jdbc:mysql://master:3006/testdb \
--username root \
--password root \
--table user_from_hdfs \
--export-dir /user/hadoop/user \
--m 1

sqoop作业

  1. 创建作业
./sqoop job --create myjob --(空格)import
--connect jdbc:mysql://node-1:3006/userdb
--username root
--password root
--table user_test
--target-dir /user_test_hfds
--m 1

2.验证作业

  • --list此命令会列出已经保存的作业
  • --show jobname 此命令会列出改job的详细信息
./sqoop job --list
./sqoop job --show myjob

3.执行作业

./sqoop job -exec myjob

4.删除作业

./sqoop job --delete myjob

5.执行person_job的时候,需要输入数据库的密码,怎么样能不输入密码呢?

配置sqoop-site.xml

<property>
<name>sqoop.metastore.client.record.password</name>
<value>true</value>
<description>If true, allow saved passwords in the metastore.
</description>
</property>

sqoop使用记录的更多相关文章

  1. 记录sqoop同步失败问题解决过程,过程真的是很崎岖。(1月6日解决)

    记录sqoop同步失败问题解决过程,过程真的是很崎岖.事发原因:最近突然出现sqoop export to mysql时频繁出错.看了下日志是卡在某条数据过不去了,看异常.看sqoop生成的mr并未发 ...

  2. Hive记录-Sqoop常用命令

    1.sqoop是什么 Sqoop是一款开源的数据迁移工具,主要用于Hadoop(Hive)与传统的关系型数据库(mysql...)相互之间的数据迁移. 2.sqoop的特点 sqoop的底层实现是ma ...

  3. sqoop的数据抽取过程记录

    今天公司抽取了4千万的表大概十几G 用sqoop抽取是30--40分钟 开了两个map.模型是oracle----hdfs(hive).以前只抽过几十万级别,所以千万级别感觉还是spilt做好切分和定 ...

  4. Hadoop学习笔记—18.Sqoop框架学习

    一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据移植过去并不容易.Apache Sqoop正在加 ...

  5. [大数据之Sqoop] —— 什么是Sqoop?

    介绍 sqoop是一款用于hadoop和关系型数据库之间数据导入导出的工具.你可以通过sqoop把数据从数据库(比如mysql,oracle)导入到hdfs中:也可以把数据从hdfs中导出到关系型数据 ...

  6. Apache Sqoop - Overview——Sqoop 概述

    Apache Sqoop - Overview Apache Sqoop 概述 使用Hadoop来分析和处理数据需要将数据加载到集群中并且将它和企业生产数据库中的其他数据进行结合处理.从生产系统加载大 ...

  7. Sqoop 结合多种系统的具体应用

    Sqoop与HDFS结合 下面我们结合 HDFS,介绍 Sqoop 从关系型数据库的导入和导出. Sqoop import 它的功能是将数据从关系型数据库导入 HDFS 中,其流程图如下所示. 我们来 ...

  8. (转)Sqoop中文手册

    Sqoop中文手册 1.     概述 本文档主要对SQOOP的使用进行了说明,参考内容主要来自于Cloudera SQOOP的官方文档.为了用中文更清楚明白地描述各参数的使用含义,本文档几乎所有参数 ...

  9. sqoop笔记

    adoop学习笔记—18.Sqoop框架学习   一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数 ...

随机推荐

  1. js中字符串常规操作

    string对象属性: 1.length 获取字符串的长度,需要注意的是,js中中文每个汉字也只代表一个字符. var myName="xulinjun"; console.log ...

  2. 使序列有序的最少交换次数(minimum swaps)

    交换相邻两数 如果只是交换相邻两数,那么最少交换次数为该序列的逆序数. 交换任意两数 数字的总个数减去循环节的个数?? A cycle is a set of elements, each of wh ...

  3. POJ1163 The Triangle

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 44997   Accepted: 27174 Description 73 ...

  4. Java中如何去除List中的重复的值?

    package com.test; import java.util.*; public class Test { /** AAAA AAAA BBBB BBBB CCCC CCCC CCCC CCC ...

  5. linux的文件布局

    /bin---权限为 rwxr-xr-x 所有者为root/root 用户bin最先进入的工作目录就是这里.这里放置的是执行目录,但是特殊在这里的命令可以被一般用户使用(root更能使用).例如 ca ...

  6. js比对一维数组全等的算法

    //辅助方法1,返回某个值在数组中的位置 Array.prototype.indexOf = function (e) { for (var i = 0, l = this.length; i < ...

  7. net页面生命周期

    ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤.这些步骤包括初始化.实例化控件.还原和维护状态.运行事件处理程序代码以及进行呈现.了解页的生命周期非常重要,这样就能 ...

  8. jQuery实现日期字符串格式化

    1. js仿后台的字符串的StringFormat方法 function StringFormat() { if (arguments.length == 0) return null; var st ...

  9. (sql server)玩转-数据库行列转换

    虽然开发过程中没用过行列转换,但是听说面试时常常会遇到这个问题,以前在网上也看到过大神的例子,今天自己仔细的玩了下,希望和大家分享一下了. 注意:列转行的方法可能是我独创的了,呵呵,因为在网上找不到哦 ...

  10. Manacher【p1659】 [国家集训队]拉拉队排练

    题目描述 n个女生举牌子(只含有26个小写字母,长度为n的字符串), 如果连续的一段女生,有奇数个,并且她们手中的牌子所写的字母,从左到右和从右到左读起来一样,那么这一段女生就被称作和谐小群体. 现在 ...