`

用Sqoop把数据从HDFS导入到MYSQL

 
阅读更多

转自:http://www.kaifajie.cn/mySQL/6263.html

 

sqoop是一个能把数据在关系型数据库和HDFS之间互相传输的工具。在这里,我写一下用java 程序来实现sqoop把数据从HDFS写入到MYSQL。
在接触sqoop之前,我自己写了一个传输类来实现数据从HDFS到MYSQL。这里简单说一下时间的思想:
1、在MYSQL中创建一个参数表A,用来记录要传输的表的表名B和字段。
2、HDFS上的数据的格式和MYSQL中参数表A中B表的字段的数量一样。
3、从MYSQL的参数表A中,读取要传输的表B。把这些字段拼凑成一个insert语句,例如
,拼凑为insert into b(column1,column2..) values(value1,value2...)
4、从HDFS相应的目录逐行读取数据,通过JDBC,把数据批量导入到MYSQL的B表中。

我现在用sqoop来代替原来传输的那个功能。先做一下准备工作:
1、hadoop的每个节点下lib文件夹中要有mysql的jar包和sqoop的jar包。
2、在HDFS的某个目录上的数据格式和MYSQL相应的表中的字段数量一致。

实现类如下:

package sqoop;

import java .util.ArrayList;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.sqoop.Sqoop;
import org.apache.sqoop.tool.ExportTool;

/**
* 用SQOOP来把数据从HDFS导入到MYSQL。
* */
public class Test {

public static void main(String[] args) {

List<String> generatedJarsList = new ArrayList<String>();

Configuration conf = new Configuration();
conf.set("fs.default.name", "hdfs://master:9000");
conf.set("hadoop.job.ugi", "hadooper,hadoopgroup");
conf.set("mapred.job.tracker", "master:9001");

ArrayList<String> list = new ArrayList<String>();  //定义一个list

list.add("--table");
list.add("a_baat_client");  //mysql中的表。将来数据要导入到这个表中。
list.add("--export-dir");
list.add("/tmp/datathree/"); //hdfs上的目录。这个目录下的数据要导入到a_baat_client这个表中。
list.add("--connect");
list.add("jdbc:mysql://192.168.1.10:3306/report"); //mysql的链接

list.add("--username");
list.add("root"); //mysql的用户名
list.add("--password");
list.add("root"); //mysql的密码

list.add("--lines-terminated-by");
list.add("\\n"); //数据的换行符号
list.add("-m");
list.add("1");//定义mapreduce的数量。

String[] arg = new String[1];

ExportTool exporter = new ExportTool();
Sqoop sqoop = new Sqoop(exporter);

sqoop.setConf(conf);

arg = list.toArray(new String[0]);

int result = Sqoop.runSqoop(sqoop, arg);


System.out.println("res:" + result);  //打印执行结果。
}
}

这个导出类执行过程中,可以在浏览器中看一下http://master:50030页面。会发现导出数据也是一个把任务转换为mapreduce执行的过程。
当然,上面的java代码,也可以用命令行来实现。命令如下:
bin/sqoop export --connect jdbc:mysql://192.168.1.10:3306/report \
--table a_baat_client --username root --password root \
--export-dir /tmp/datathree/  -m 1

关于sqoop把数据从HDFS导入到MYSQL就说这么多。把数据从HIVE导入到MYSQL,其实可以理解为把HIVE表所对应的HDFS路径的数据导入到MYSQL,这里就不多说了。

分享到:
评论

相关推荐

    sqoop导入数据到hdfs路径

    sqoop导入数据到hdfs,所有相关的操作命令均在更改相关地址就行。

    2、sqoop导入(RMDB-mysql、sybase到HDFS-hive)

    2、sqoop导入(RMDB-mysql、sybase到HDFS-hive) 网址:https://blog.csdn.net/chenwewi520feng/article/details/130572275 介绍sqoop从关系型数据库mysql、sybase同步到hdfs、hive中

    解决sqoop2导入hdfs单引号问题

    使用sqoop2从mysql导入hadoop时,导入的数据带单引号。是由于sqoop2的一个bug导致,该包上传到sqoop_home/server/lib替换原来的jar包后,重启sqoop server,即可解决。

    实战Sqoop数据导入及大数据用户行为案例分析

    05_Sqoop将MySQL数据导入到HDFS(一) 06_Sqoop将MySQL数据导入到HDFS(二) 07_Sqoop中的增量导入与Sqoop job 08_Sqoop将MySQL数据导入Hive表中 09_Sqoop的导出及脚本中使用的方式 10_案例分析-动态分区的实现 11_...

    sqoop配置.docx

    Hadoop2.6伪分布安装sqoop1.4.6及hdfs与mysql导入导出数据 sqoop安装及简单测试 启动sqoop 启动mysql 从mysql导入数据到hdfs中 从HDFS导出数据到mysql

    大数据开发中的Sqoop学习笔记(自己整理版).pdf

    将MySQL数据导入到hdfs(全部导入和部分导入相关操作); 将MySQL数据导入到Hive;增量导入数据(包括:全量导入&增量导入);增量导入的2种方案; 从hdfs导出到mysql;从hive导出到mysql; Sqoop中的Job任务使用;...

    Sqoop的基本安装和使用实验作业参考

    内含:Hadoop、Sqoop、...实验目的: 验证利用sqoop把数据 从 mysql 导入到 hdfs 1.下载实验所需软件包 2.在centos7安装mysql 3.在centos7安装hadoop伪分布式 4.安装sqoop,配置sqoop 5.验证sqoop数据导入

    Sqoop企业级大数据迁移方案全方位实战视频教程

    数据导入分布式文件系统HDFS 3.数据导入数据仓库Hive 4.基于复杂条件实现数据导入 5.基于订单案例实现Increment增量同步数据 6.基于订单案例实现lastModified增量同步导入数据 7.数据导入原理详解 第三章:...

    Sqoop同步数据命令

    Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以使用Sqoop将数据从MySQL或Oracle等关系数据库管理系统(RDBMS)导入Hadoop分布式文件系统(HDFS),在Hadoop MapReduce中转换数据,然后将数据...

    sqoop安装详解以及sqoop介绍

    sqoop安装详解以及sqoop内容介绍使用介绍 ...2、导入数据:从结构化数据(Mysql,oracle,db2,)导入到半结构化或非结构化hadoop中(HDFS、HIVE、HBASE) 3、导出数据:从haoop中将数据导出到关系数据库中MySql

    sqoop工具_202006041735481.docx

    同时也可以把数据从 Hadoop 系统里抽取并导出到关系型数据库里。除了这些主要的功能 外,Sqoop 也提供了一些诸如查看数据库表等实用的小工具。理论上,Sqoop 支持任何一款支持 JDBC 规范的数据库,如 DB2、MySQL 等...

    大数据-sqoop.pptx

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

    SQL与NoSQL,数据桥梁Sqoop

    从MySQL导入数据到HDFS文件系统中,简单的一种方式是使用Sqoop,然后将HDFS中的数据和Hive建立映射。通过Sqoop作为数据桥梁,将传统的数据也存入到NoSQL中来了,有了数据,猴戏才刚刚开始。  01 猴年伊始  SQL...

    大数据运维技术第9章 Sqoop组件安装配置.pptx

    它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。Sqoop由Apache软件基金会提供。;9.2 Sqoop功能应用;9.2.1 Sqoop架构;;;;9.2.2 Sqoop导入原理; JDBC的ResultSet...

    sqoop-spark-hive:MYSQL | SQOOP | 火花| HIVE工作流程

    mysql,sqoop,spark,hive工作流管道它将通过两个表order和order_items产生每日收入Sqoop 以“ parquet”格式将订单和order_items数据从mysql导入到hdfs 在这里,我们正在创建sqoop作业以用于增量数据导入命令订单...

    Apache Hadoop---Sqoop.docx

    Sqoop可以将一个关系型数据库(例如MySQL、Oracle、PostgreSQL等)中的数据导入Hadoop的HDFS、Hive中,也可以将HDFS、Hive中的数据导入关系型数据库中。Sqoop充分利用了Hadoop的优点,整个数据导入导出过程都是用...

    在Hadoop集群环境中为MySQL安装配置Sqoop的教程

    Sqoop中一大亮点就是可以通过hadoop的mapreduce把数据从关系型数据库中导入数据到HDFS。 一、安装sqoop 1、下载sqoop压缩包,并解压 压缩包分别是:sqoop-1.2.0-CDH3B4.tar.gz,hadoop-0.20.2-CDH3B4.tar.gz, ...

    sqoop官方文档学习笔记

    Sqoop是一个用于在Hadoop和关系...您可以使用Sqoop将关系数据库管理系统(RDBMS)(如MySQL或Oracle或大型机)中的数据导入Hadoop分布式文件系统(HDFS),转换Hadoop MapReduce中的数据,然后将数据导出回RDBMS 。

    hadoop实现购物商城推荐系统

    这里主要介绍推荐系统的基本原理,所以推荐依据很简单)的表数据导入到hdfs中。2,用MapReduce实现推荐算法。3,通过sqoop将推荐系统的结果写回mysql。4,java商城通过推荐系统的数据实现&lt;喜欢该商品的人

    基于hadoop实现的电影推荐网站+源代码+文档说明

    每过一段时间就对该时段内的评分数据进行协同过滤算法的MapReduce计算,计算结果是存储在HDFS里的,所以要使用sqoop工具来对HDFS中非关系型数据转发到MYSQL这样的关系型数据库中,导入到MYSQL的推荐表中。...

Global site tag (gtag.js) - Google Analytics