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,这里就不多说了。
- 浏览: 385729 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
tonyyan:
谢谢分享!
mapreudce 通过读取hbase表删除hbase 数据 -
maicose:
学习了,谢谢
使用spring @Scheduled注解执行定时任务 -
shuaianwen:
若果使用这种注解方式,多个定时任务设置成相同时间貌似不能并行; ...
使用spring @Scheduled注解执行定时任务 -
hanmiao:
故事不错,感觉那小男孩是個营销人才,哈哈...
前期是老板给你发工资,中期是能力给你发工资,后期是品德给你发工资!
发表评论
-
java.lang.SecurityException解决办法
2015-04-17 10:12 10414Exception in thread "main ... -
postgresql 字符串转整形
2015-03-05 17:20 838字符串转Integer SELECT CAST (titl ... -
postgresql实现模糊查询 正则表达式
2015-03-04 10:39 5624因为数据库的查询操作比较单一,所以大部分的模糊查询操作都需要 ... -
PostgreSQL的许多小技巧
2015-02-28 16:43 7101.使用空间索引进行快 ... -
postgresql 字段sql语句 更改表名
2015-02-28 09:59 22081.更改表名 alter table 表名 rename ... -
PostgreSQL时间运算
2014-11-28 00:24 1253在PostgreSQL中可以直接对timestamp进行加减 ... -
两个数据库设计实例--转
2014-10-01 00:13 473(注:摘自 http://blog.16 ... -
MySQL错误Another MySQL daemon already running with the same unix socket.
2014-09-24 11:02 542在国外网站发现的解决方法。 原因多个Mysql进程使用了同 ... -
FATAL: could not open configuration file "/opt/PostgreSQL/8.4/data1/postgresql.
2014-08-20 16:26 770权限问题: chown postgres:postgres ... -
hadoop 节点时间同步
2014-05-28 14:17 927时间同步:在每台服务器的 /etc/crontab 中加入 ... -
设置MySQL开机自动启动
2014-03-29 09:50 1141通过yum安装MySQL后,默认开机时不会自动启动,需要手动 ... -
hadoop1.2.1+zookeeper-3.4.5+hbase-0.94.1集群安装
2014-03-22 16:43 1061一,环境: 1,主机规划: 集群中包括3个节点:hado ... -
HDFS的基本概念
2014-03-20 14:59 8571、数据块(block) HDFS(Had ... -
使用Ganglia监控Hadoop集群
2014-03-18 22:01 9180 环境 操作系统:CentOS 6.2 hadoo ... -
zookeeper技术浅析
2014-03-18 10:17 937Zookeeper是hadoop的一个子 ... -
编译 hadoop 2.2.0
2014-03-15 14:35 1036Hadoop 2.2 是 Hadoop 2 即yarn的第 ... -
PostgreSQL服务启动又停止的解决方法
2014-03-13 09:56 19768安装PostgreSQL数据库8.3版本后,启动数据库服 ... -
(转)oracle复合索引介绍(多字段索引)
2014-02-27 13:59 778oracle普通索引介绍(单字段索引) : http://y ... -
Oracle获取序列的值 dual 表的功能
2014-02-21 22:59 14421、DUAL表的用途Dual 是 Oracle中的一个实际存在 ... -
PostgreSQL一些简单问题以及解决办法
2014-02-12 10:43 2090问题:org.postgresql.util.PSQLExc ...
相关推荐
### 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 起到了连接传统数据存储和分布式计算框架的桥梁作用。 ...
Sqoop的安装和配置,Sqoop的数据导入导出,MySQL对hdfs数据的操作
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。 #### 安装环境准备 在开始之前,请确保...