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简介 ...通过以上详细解析和说明,我们不仅了解了如何使用Sqoop将数据从MySQL导入到HDFS中,还学习了一些高级用法和注意事项,这对于实际操作中解决问题非常有帮助。
在本主题中,我们将深入探讨 Sqoop 的导入功能,特别是如何将数据从 MySQL 和 Sybase 数据库导入到 HDFS,并进一步加载到 Hive 表中。 ### 一、Sqoop 导入介绍 1. **语法结构**: Sqoop 导入数据的基本语法如下:...
假设我们有一个HDFS路径`/user/hive/warehouse/test.db/person/part-m-00000`,其中包含了从MySQL导入到Hive的`person`表的数据,现在我们想要把这些数据导回MySQL。 首先,确保在MySQL中有与HDFS文件对应的表结构...
首先,Sqoop不仅支持将数据从关系型数据库如MySQL导入到HDFS或Hive,还能直接导入到HBase。关键在于正确使用参数: 1. `--hbase-table`:此参数用于指定导入的数据应存储在哪个HBase表中。不指定的话,数据将被导入...
Sqoop 是一个用于在 Hadoop 和关系型数据库之间进行数据导入导出的工具,它使得在大数据处理场景下,能够方便地将结构化的数据从 MySQL 这样的 RDBMS(关系型数据库管理系统)转移到 Hadoop 的 HDFS(Hadoop 分布式...
使用sqoop2从mysql导入hadoop时,导入的数据带单引号。是由于sqoop2的一个bug导致,该包上传到sqoop_home/server/lib替换原来的jar包后,重启sqoop server,即可解决。
它的主要功能是将结构化数据从传统数据库导入到 Hadoop 的 HDFS(Hadoop Distributed File System),或者从 HDFS 导出回数据库。在大数据处理场景中,Sqoop 起到了连接传统数据存储和分布式计算框架的桥梁作用。 ...
05_Sqoop将MySQL数据导入到HDFS(一) 06_Sqoop将MySQL数据导入到HDFS(二) 07_Sqoop中的增量导入与Sqoop job 08_Sqoop将MySQL数据导入Hive表中 09_Sqoop的导出及脚本中使用的方式 10_案例分析-动态分区的实现 11_...
通常情况下,Sqoop命令包括导入数据到HDFS(sqoop import),从HDFS导出数据到关系数据库(sqoop export),以及在数据库之间转移数据(sqoop job)等。 总结来说,Sqoop在星环大数据平台中扮演着数据导入导出的...
在将 mysql 数据库中的表导入到 HDFS 中时,需要启动 hadoop,登录 mysql 数据库,查看 hive 数据库中有哪些表,然后使用 sqoop 命令将 hive 数据库中的表导入到 HDFS 中。最后,查看是否导入 HDFS 中。 Sqoop ...
在将数据从 Hive 导入到 MySQL 时,Sqoop 可能会遇到一些问题。例如,在描述文件中,Sqoop 的版本为 1.4.4,Hadoop 的版本为 1.0.0,Hive 的版本为 0.11.0。 Sqoop 在连接 MySQL 时,需要指定 JDBC 连接器的路径,...
Sqoop 是一个专门用于将 Hadoop 和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如:MySQL、Oracle、Postgres 等)中的数据导进到 Hadoop 的 HDFS 中,也可以将 HDFS 的数据导进到关系型数据库...
- 导入数据:使用Sqoop将MySQL数据导入Hive,数据会自动创建为Hive外部表。 在实际操作中,可以使用`--where`参数限制导入导出的数据范围,提高灵活性。此外, Sqoop还支持增量导入,通过指定last-row键值,只导入...
本文主要讲述在Hue平台使用Oozie工作流操作Sqoop工具将MySQL数据库的数据传输到HDFS中,并最终导入到Hive表中的经验。以下是详细知识点: 1. Hue平台和Oozie工作流简介: Hue是一种开源的用户界面,用于简化与...
3. Sqoop会生成MapReduce作业,执行数据导入过程,将数据从MySQL导入到HDFS。 ### 三、数据导出:HDFS->MySQL 1. 数据导出是逆向操作,使用`sqoop export`命令,指定HDFS中数据的路径,数据库连接参数,以及要写入...
把数据从Hadoop系统里面抽取并导出到关系型数据库中 利用MapReduce加快数据处理速度 ·批处理方式进行数据传输 Sqoop 优势 ·¬高效、可控地利用资源 任务并行度,超时时间等 数据类型映射与转换 ,可自动进行,用户也...
本实验的主要目的就是熟悉Sqoop数据集成,通过安装和配置Sqoop、MySQL数据库,并使用Sqoop工具将数据从MySQL数据库中导入到HDFS中。 一、实验准备 在进行实验之前,需要准备好实验用的硬件和软件环境。硬件环境...
### Sqoop 1.x 数据导入详解 ...综上所述,通过 Sqoop 1.x 可以实现数据从关系型数据库到 Hadoop 生态系统的高效传输。根据具体需求选择合适的导入策略,可以有效提高数据处理效率并确保数据质量。
本文将详细介绍如何在Hadoop2.6伪分布环境中安装配置Sqoop1.4.6,并进行简单的测试,包括启动Sqoop、MySQL服务以及如何实现从MySQL导入数据到HDFS和从HDFS导出数据到MySQL。 #### 安装环境准备 在开始之前,请确保...
通过Sqoop,可以将数据从关系数据库导入到Hadoop的HDFS中,也可以将数据从Hadoop的HDFS导出到外部关系数据库中。 Sqoop使用MapReduce进行数据传输,其数据传输工作是在后台由一个或多个MapReduce作业完成的。这个...