`

用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路径详解 #### 一、Sqoop简介 ...通过以上详细解析和说明,我们不仅了解了如何使用Sqoop将数据从MySQL导入到HDFS中,还学习了一些高级用法和注意事项,这对于实际操作中解决问题非常有帮助。

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

    在本主题中,我们将深入探讨 Sqoop 的导入功能,特别是如何将数据从 MySQL 和 Sybase 数据库导入到 HDFS,并进一步加载到 Hive 表中。 ### 一、Sqoop 导入介绍 1. **语法结构**: Sqoop 导入数据的基本语法如下:...

    3、Sqoop导出(HDFS到RMDB-mysql)

    假设我们有一个HDFS路径`/user/hive/warehouse/test.db/person/part-m-00000`,其中包含了从MySQL导入到Hive的`person`表的数据,现在我们想要把这些数据导回MySQL。 首先,确保在MySQL中有与HDFS文件对应的表结构...

    使用sqoop抽取mysql数据

    Sqoop 是一个用于在 Hadoop 和关系型数据库之间进行数据导入导出的工具,它使得在大数据处理场景下,能够方便地将结构化的数据从 MySQL 这样的 RDBMS(关系型数据库管理系统)转移到 Hadoop 的 HDFS(Hadoop 分布式...

    解决sqoop2导入hdfs单引号问题

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

    sqoop的数据导入

    它的主要功能是将结构化数据从传统数据库导入到 Hadoop 的 HDFS(Hadoop Distributed File System),或者从 HDFS 导出回数据库。在大数据处理场景中,Sqoop 起到了连接传统数据存储和分布式计算框架的桥梁作用。 ...

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

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

    星环大数据平台_Sqoop数据导入.pdf

    通常情况下,Sqoop命令包括导入数据到HDFS(sqoop import),从HDFS导出数据到关系数据库(sqoop export),以及在数据库之间转移数据(sqoop job)等。 总结来说,Sqoop在星环大数据平台中扮演着数据导入导出的...

    sqoop把mysql数据导入hbase2.1.6

    首先,Sqoop不仅支持将数据从关系型数据库如MySQL导入到HDFS或Hive,还能直接导入到HBase。关键在于正确使用参数: 1. `--hbase-table`:此参数用于指定导入的数据应存储在哪个HBase表中。不指定的话,数据将被导入...

    Sqoop安装与使用

    在将 mysql 数据库中的表导入到 HDFS 中时,需要启动 hadoop,登录 mysql 数据库,查看 hive 数据库中有哪些表,然后使用 sqoop 命令将 hive 数据库中的表导入到 HDFS 中。最后,查看是否导入 HDFS 中。 Sqoop ...

    sqoop 从 hive 导到mysql遇到的问题.docx

    在将数据从 Hive 导入到 MySQL 时,Sqoop 可能会遇到一些问题。例如,在描述文件中,Sqoop 的版本为 1.4.4,Hadoop 的版本为 1.0.0,Hive 的版本为 0.11.0。 Sqoop 在连接 MySQL 时,需要指定 JDBC 连接器的路径,...

    数据同步Sqoop用法之mysql与Hive导入导出.docx

    Sqoop 是一个专门用于将 Hadoop 和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如:MySQL、Oracle、Postgres 等)中的数据导进到 Hadoop 的 HDFS 中,也可以将 HDFS 的数据导进到关系型数据库...

    hue平台oozie工作流操作sqoop,把mysql.pdf

    本文主要讲述在Hue平台使用Oozie工作流操作Sqoop工具将MySQL数据库的数据传输到HDFS中,并最终导入到Hive表中的经验。以下是详细知识点: 1. Hue平台和Oozie工作流简介: Hue是一种开源的用户界面,用于简化与...

    大数据实践-sqoop数据导入导出.doc

    3. Sqoop会生成MapReduce作业,执行数据导入过程,将数据从MySQL导入到HDFS。 ### 三、数据导出:HDFS-&gt;MySQL 1. 数据导出是逆向操作,使用`sqoop export`命令,指定HDFS中数据的路径,数据库连接参数,以及要写入...

    23-Sqoop数据导入导出1

    - 导入数据:使用Sqoop将MySQL数据导入Hive,数据会自动创建为Hive外部表。 在实际操作中,可以使用`--where`参数限制导入导出的数据范围,提高灵活性。此外, Sqoop还支持增量导入,通过指定last-row键值,只导入...

    实验13-sqoop数据集成.docx

    本实验的主要目的就是熟悉Sqoop数据集成,通过安装和配置Sqoop、MySQL数据库,并使用Sqoop工具将数据从MySQL数据库中导入到HDFS中。 一、实验准备 在进行实验之前,需要准备好实验用的硬件和软件环境。硬件环境...

    sqoop1.x 导入数据

    ### Sqoop 1.x 数据导入详解 ...综上所述,通过 Sqoop 1.x 可以实现数据从关系型数据库到 Hadoop 生态系统的高效传输。根据具体需求选择合适的导入策略,可以有效提高数据处理效率并确保数据质量。

    sqoop配置.docx

    本文将详细介绍如何在Hadoop2.6伪分布环境中安装配置Sqoop1.4.6,并进行简单的测试,包括启动Sqoop、MySQL服务以及如何实现从MySQL导入数据到HDFS和从HDFS导出数据到MySQL。 #### 安装环境准备 在开始之前,请确保...

    Sqoop使用手册(高清书签)

    通过Sqoop,可以将数据从关系数据库导入到Hadoop的HDFS中,也可以将数据从Hadoop的HDFS导出到外部关系数据库中。 Sqoop使用MapReduce进行数据传输,其数据传输工作是在后台由一个或多个MapReduce作业完成的。这个...

    mysql-connector-5.1.39,配合sqoop1.4.7和hive2.1.1使用

    它允许用户将大规模的数据导入到Hadoop的HDFS(Hadoop Distributed File System)中,或者从Hadoop导出数据到结构化的数据库系统,如MySQL。Sqoop通过使用MapReduce任务来并行化数据传输过程,从而提高了效率。 `...

Global site tag (gtag.js) - Google Analytics