1. sqoop数据迁移

1.1 概述

sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。
导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;
导出数据:从Hadoop的文件系统中导出数据到关系数据库

1.2 工作机制

将导入或导出命令翻译成mapreduce程序来实现
在翻译出的mapreduce中主要是对inputformat和outputformat进行定制

1.3 sqoop实战及原理

1.3.1 sqoop安装

安装sqoop的前提是已经具备java和hadoop的环境
1、下载并解压
最新版下载地址http://ftp.wayne.edu/apache/sqoop/1.4.6/
比如:sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz

[root@hadoop1 sqoop]# tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
[root@hadoop1 sqoop]# mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop
[root@hadoop1 sqoop]# ls
apache-hive-1.2.1-bin hadoop-2.7.4 hdfs pig-0.17.0 pig_1517170893185.log sqoop tmp

2、修改配置文件
在/etc/profile中配置sqoop_home,代码如下:

vim /etc/profile
export SQOOP_HOME=/usr/local/hadoop/sqoop
追加path
export PATH=$PATH:$SQOOP_HOME/bin
[root@hadoop1 sqoop]# source /etc/profile
$ cd $SQOOP_HOME/conf
$ mv sqoop-env-template.sh sqoop-env.sh

打开sqoop-env.sh并编辑下面几行: ## 去掉前面的##

export HADOOP_COMMON_HOME=/usr/local/hadoop/hadoop-2.7.4/
export HADOOP_MAPRED_HOME=/usr/local/hadoop/hadoop-2.7.4/
export HIVE_HOME=/usr/local/hadoop/apache-hive-1.2.1-bin/

配置后的界面效果如下:
这里写图片描述

3.1 加入oracle的驱动包
将 ojdbc6.jar 放到 $SQOOP_HOME/lib/ 下。

3.2 加入mysql的jdbc驱动包
将mysql-connector-java-5.1.38.jar 放到 $SQOOP_HOME/lib/ 下。

4、验证启动

$ cd $SQOOP_HOME/bin
$ sqoop-version

预期的输出:

[root@hadoop1 sqoop]# sqoop-version
Warning: /usr/local/hadoop/sqoop/../hbase does not exist! HBase imports will fail.
Please set $HBASE_HOME to the root of your HBase installation.
Warning: /usr/local/hadoop/sqoop/../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /usr/local/hadoop/sqoop/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
Warning: /usr/local/hadoop/sqoop/../zookeeper does not exist! Accumulo imports will fail.
Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation.
18/01/29 19:09:34 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
Sqoop 1.4.6
git commit id c0c5a81723759fa575844a0a1eae8f510fa32c25
Compiled by root on Mon Apr 27 14:38:36 CST 2015
[root@hadoop1 sqoop]#

到这里,整个Sqoop安装工作完成。

数据迁移> oracle to hive ## 注意 HIVE 表名需要大写
sqoop# sqoop import --hive-import --connect jdbc:oracle:thin:@10.100.25.8:1521:devdb1 --username andy --password andy \
--table ANDY --hive-database oracletohive --hive-table ANDY -m 1
说明: 迁移的表时,如果 hive中已经存在,则默认会追加在原表中。 如果 hive 中不存在,则自动创建。

日志输出:
18/01/29 19:35:46 INFO hive.HiveImport: Loading uploaded data into Hive
18/01/29 19:35:51 INFO hive.HiveImport:
18/01/29 19:35:51 INFO hive.HiveImport: Logging initialized using configuration in jar:file:/usr/local/hadoop/apache-hive-1.2.1-bin/lib/hive-common-1.2.1.jar!/hive-log4j.properties
18/01/29 19:36:02 INFO hive.HiveImport: OK
18/01/29 19:36:02 INFO hive.HiveImport: Time taken: 2.42 seconds
18/01/29 19:36:03 INFO hive.HiveImport: Loading data to table oracletohive.andy
18/01/29 19:36:04 INFO hive.HiveImport: Table oracletohive.andy stats: [numFiles=1, totalSize=1996]
18/01/29 19:36:04 INFO hive.HiveImport: OK
18/01/29 19:36:04 INFO hive.HiveImport: Time taken: 1.579 seconds
18/01/29 19:36:04 INFO hive.HiveImport: Hive import complete.
18/01/29 19:36:04 INFO hive.HiveImport: Export directory is contains the _SUCCESS file only, removing the directory.

> show databases;
OK
default
oracletohive
Time taken: 0.027 seconds, Fetched: 2 row(s)
hive>
> use oracletohive;
OK
Time taken: 0.034 seconds
hive>
> show tables;
OK
andy
Time taken: 0.037 seconds, Fetched: 1 row(s)
hive> select count(*) from andy;
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 1
2018-01-29 19:43:46,040 Stage-1 map = 0%, reduce = 0%
2018-01-29 19:43:54,738 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.49 sec
2018-01-29 19:44:03,323 Stage-1 map = 100%, reduce = 100%, Cumulative CPU 3.39 sec
MapReduce Total cumulative CPU time: 3 seconds 390 msec
Ended Job = job_1517222580457_0002
MapReduce Jobs Launched:
Stage-Stage-1: Map: 1 Reduce: 1 Cumulative CPU: 3.39 sec HDFS Read: 16343 HDFS Write: 2 SUCCESS
Total MapReduce CPU Time Spent: 3 seconds 390 msec
OK
7
Time taken: 34.543 seconds, Fetched: 1 row(s)

数据迁移> hive to oracle

hive迁移oracle,需要提前在oracle中创建迁移的表,否则报 java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

sqoop# sqoop export --table ANDY --connect jdbc:oracle:thin:@10.100.25.8:1521:devdb1 --username andy --password andy
--export-dir /user/hive/warehouse/oracletohive.db/andy --input-fields-terminated-by '\001' \
--input-lines-terminated-by '\n'

日志输出:
18/01/29 20:21:34 INFO mapreduce.Job: Job job_1517222580457_0005 completed successfully
18/01/29 20:21:34 INFO mapreduce.Job: Counters: 30
。。。。。 省略输出
18/01/29 20:21:34 INFO mapreduce.ExportJobBase: Transferred 5.502 KB in 116.7414 seconds (48.2605 bytes/sec)
18/01/29 20:21:34 INFO mapreduce.ExportJobBase: Exported 7 records.

-- oracle端查看
SQL> select count(*) from andy;

COUNT(*)
----------
14 > 由 7条 变为了 14条 , 说明 hive 导入 oracle 成功!

HIVE之 Sqoop 1.4.6 安装、hive与oracle表互导的更多相关文章

  1. hadoop安装hive及java调用hive

     1.安装hive 在安装hive前,请确保已经安装好了hadoop,如未安装,请参考centoos 安装hadoop集群进行安装: 1.1.下载,解压 下载hive2.1.1:http://mirr ...

  2. Hadoop生态组件Hive,Sqoop安装及Sqoop从HDFS/hive抽取数据到关系型数据库Mysql

    一般Hive依赖关系型数据库Mysql,故先安装Mysql $: yum install mysql-server mysql-client [yum安装] $: /etc/init.d/mysqld ...

  3. Hive/Hbase/Sqoop的安装教程

    Hive/Hbase/Sqoop的安装教程 HIVE INSTALL 1.下载安装包:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.3 ...

  4. 第七章 伪分布式安装hive,sqoop

    第一部分:先讲这么去安装hive.先去hive官网下载,我这里以hive-0.12.0为例子. 前面第二章讲了安装hadoop,hbase实例,我们继续讲这么安装hive,先说下hive配置文件 一, ...

  5. Centos搭建mysql/Hadoop/Hive/Hbase/Sqoop/Pig

    目录: 准备工作 Centos安装 mysql Centos安装Hadoop Centos安装hive JDBC远程连接Hive Hbase和hive整合 Centos安装Hbase 准备工作: 配置 ...

  6. Sqoop使用,mysql,hbase,hive等相互转换

    Sqoop 是一款用来在不同数据存储软件之间进行数据传输的开源软件,它支持多种类型的数据储存软件. 安装 Sqoop 1.下载sqoop并加mysql驱动包 http://mirror.bit.edu ...

  7. 安装Hive(独立模式 使用mysql连接)

    安装Hive(独立模式 使用mysql连接) 1.默认安装了java+hadoop 2.下载对应hadoop版本的安装包 3.解压安装包 tar zxvf apache-hive-1.2.1-bin. ...

  8. 附录C 编译安装Hive

    如果需要直接安装Hive,可以跳过编译步骤,从Hive的官网下载编译好的安装包,下载地址为http://hive.apache.org/downloads.html . C.1  编译Hive C.1 ...

  9. 一步一步安装hive

    安装hive 1.下载hive-0.11.0.tar.gz,解压; 2.下载mysql-connector-java-5.1.29-bin.jar并放到hive/lib/下: 3.配置hive/con ...

随机推荐

  1. mysql日期查询大全

    -- 查询昨日一整天的数据 DAY) ,'%Y-%m-%d 23:59:59') AS '昨日结束时间' -- 查询今日开始到当前时间的数据 DAY) ,'%Y-%m-%d %H:%i:%s') AS ...

  2. uva-11426-数论

    https://vjudge.net/problem/UVA-11426#author=0 求 SUM{ gcd(i,j) | 1<=i<j<=n}, n<4000001. 令 ...

  3. 无法打开物理文件“xxxx.mdf”。操作系统错误 5:“5(拒绝访问)”

  4. 最小生成树 - 克鲁斯卡尔 - 并查集 - 边稀疏 - O(E * logE)

    #define _CRT_SECURE_NO_WARNINGS #include<cstdio> #include<cstring> #include<algorithm ...

  5. iOS UI-UIScrollView控件实现图片缩放功能

    一.缩放 1.简单说明: 有些时候,我们可能要对某些内容进行手势缩放,如下图所示 UIScrollView不仅能滚动显示大量内容,还能对其内容进行缩放处理.也就是说,要完成缩放功能的话,只需要将需要缩 ...

  6. SQL优化(SQL TUNING)可大幅提升性能的实战技巧之一——让计划沿着索引跑

    我们进行SQL优化时,经常会碰到对大量数据集进行排序,然后从排序后的集合取前部分结果的需求,这种情况下,当我们按照常规思路去写SQL时,系统会先读取过滤获得所有集合,然后进行排序,再从排序结果取出极少 ...

  7. java并发带返回结果的批量任务执行(CompletionService:Executor + BlockingQueue)

    转载:http://www.it165.net/pro/html/201405/14551.html 一般情况下,我们使用Runnable作为基本的任务表示形式,但是Runnable是一种有很大局限的 ...

  8. c#版本与vs的对应关系

    版本 .NET Framework版本 Visual Studio版本 发布日期 特性 C# 1.0 .NET Framework 1.0 Visual Studio .NET 2002 2002.1 ...

  9. redis的主从复制和高可用集群

    一.redis的简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.redis是一个key-value存储系 ...

  10. the usage of String

    经典算法:(整理汇总) 1)如何快速倒叙: public static char[] reverseArray(char[] c){ char t; for(int i=0;i<c.length ...