`
sunasheng
  • 浏览: 122804 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

mapreduce对于关系数据库的连接和访问

阅读更多

关系数据库的连接和访问

1.从数据库中输入数据

DBInputFormat提供从数据库读取数据的格式
DBRecordReader提供读取数据记录的接口
Hadoop允许直接从数据库读取数据,但是这样的话频繁读取会大大加重数据库的负载,所以一般不建议这样做
一个比较好的解决方法是:用数据库中的dump工具将待分析的大量数据输出为文本数据文件,并上载到HDFS中进行处理。

2.向数据库中输出计算结果
DBOutputFormat提供向数据库中输出数据的格式
DBRecordWriter提供向数据库中写入数据记录的接口
DBConfiguration提供数据库配置和创建连接的接口

DBConfiguration 中的静态方法:

 

public static void configureDB(Job job,String driverClass,String dbUrl,String userName,String password)

 DBOutputFormat 中提供静态方法(指定需要写入的数据表和字段):

 

 

public static void setOutput(Job job,String tableName,String ...fieldNames)

示例:

Configuration conf = new Configuration();
Job job = new Job(conf,JobClass.class);
job.setOutputFormat(DBOutputFormat.class);
DBConfiguration.configureDB(job,"com.mysql.jdbc.Driver","jdbc:mysql://db.host.com/mydb","myname","mypassword");
DBOutputFormat.setOutput(job,"Customers","Name","PhoneNumber");

 此外为了向数据库中写入数据还得实现DBWritable

package test;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.mapred.lib.db.DBWritable;

public class CustomersDBWritable implements Writable, DBWritable {
	private String CustomerName;
	private String PhoneNumber;

	@Override
	public void readFields(ResultSet resultSet) throws SQLException {
		CustomerName = resultSet.getString(1);
		PhoneNumber = resultSet.getString(2);
		// 除非是用DBInputFormat直接向数据库输入数据,否则readFields方法不会被调用
	}

	@Override
	public void write(PreparedStatement statement) throws SQLException {
		statement.setString(1, CustomerName);
		statement.setString(2, PhoneNumber);
	}

	@Override
	public void readFields(DataInput in) throws IOException {
		CustomerName = in.readUTF();
		PhoneNumber = in.readUTF();
	}

	@Override
	public void write(DataOutput out) throws IOException {
		out.writeUTF(CustomerName);
		out.writeUTF(PhoneNumber);
	}
}

  

 

分享到:
评论

相关推荐

    hadoop连接mysql数据库访问数据和导入数据

    hadoop连接数据库查询数据,并添加到hdfs;从hdfs进行mapreduce数据导入到数据库 hadoop连接数据库查询数据,并添加到hdfs;从hdfs进行mapreduce数据导入到数据库 hadoop连接数据库查询数据,并添加到hdfs;从hdfs...

    MapReduce on Hbase

    在MapReduce的基础上,可以实现对HBase数据库的数据操作,包括读取、写入和更新HBase表中的数据。 在使用MapReduce操作HBase时,可以通过Hadoop MapReduce框架提供的API与HBase数据库进行交互。这使得开发者可以在...

    国科大数据库新技术复习大纲【2021秋季】.doc

    【数据库新技术复习大纲】 在国科大的这门课程中,主要涵盖了关系数据库模型与运算、数据库设计与管理系统、分布式数据库和面向对象数据库以及新型数据库...全面理解和掌握这些内容对于理解和应用数据库技术至关重要。

    hadoop访问数据库

    3. **配置作业**:使用`DBConfiguration.configureDB()`函数配置数据库连接信息,接着使用`DBInputFormat.setInput()`函数指定输入表和字段信息。 4. **执行MapReduce作业**:定义Mapper和Reducer类,配置作业参数...

    Data-Intensive Text Processing with MapReduce

    关系连接是在MapReduce中实现数据库中JOIN操作的一种方法。 - **Reduce-Side Join**:将连接操作放在Reduce阶段进行,适用于小表与大表之间的连接。 - **Map-Side Join**:将连接操作放在Map阶段进行,适用于两个大...

    斯坦福大学数据库

    这部分可能涵盖NoSQL数据库、MapReduce模型和实时数据分析。 7. **数据库恢复与备份**:如何在系统故障后恢复数据,以及定期备份策略,确保数据的可用性和持久性。 8. **云数据库**:随着云计算的发展,云数据库...

    Data-Intensive+Text+Processing+with+MapReduce

    关系联接是数据库中的常见操作,在MapReduce中也有对应的方法实现,包括Reduce-Side Join、Map-Side Join和Memory-Backed Join。这些方法能够实现在分布式环境下的表连接,对于数据集成和分析具有重要意义。 ### ...

    分布式MapReduce相关技术研究

    - **简化并行编程**:MapReduce通过将任务分解为简单的Map和Reduce阶段,大大降低了编写并行程序的难度。 - **容错机制**:系统内置的重试机制能够自动处理节点故障,确保数据的完整性和一致性。 - **资源优化**:...

    DBConnection.zip|DBConnection.zip

    总之,"DBConnection.zip"可能涵盖了Hadoop环境下使用JDBC进行数据库操作的各种知识点,包括但不限于JDBC API、Hadoop数据处理工具的数据库连接、连接池的使用以及MapReduce中的数据库I/O格式。深入理解这些内容对于...

    Hadoop数据迁移--从Oracle向Hadoop

    在这个过程中,MapReduce作为一种编程模型,用于处理和生成大数据集,被用来连接Hadoop与Oracle数据库,使得Hadoop能够直接访问Oracle数据。 在进行Hadoop与Oracle之间的数据迁移时,需要定义数据库信息类DBInfo,...

    历年数据库系统工程师试题

    3. 数据库连接池:如C3P0、Apache DBCP、HikariCP,它们的作用和配置。 五、分布式数据库与大数据 1. 分布式数据库:CAP理论、BASE原则,如Hadoop、Cassandra等分布式数据库系统。 2. 数据仓库与数据湖:ETL...

    数据库系统导论(第7版)

    2. **关系数据库**:重点讲述关系数据模型,包括关系运算(选择、投影、连接、除法等)、关系代数和SQL语言,以及实体-关系(E-R)模型在设计过程中的应用。 3. **数据库设计**:详细讲解需求分析、逻辑设计和物理...

    hadoop+hive+mapreduce的java例子

     Hive提供了jdbc驱动,使得我们可以用Java代码来连接Hive并进行一些类关系型数据库的sql语句查询等操作。同关系型数据库一样,我们也需要将Hive的服务打开;在Hive 0.11.0版本之前,只有HiveServer服务可用,你得在...

    数据库处理(基础设计实现)

    它可以连接到多种类型的数据库进行数据读取和写入,如通过Spark SQL与Hive、HBase等进行交互。理解Spark DataFrame和Dataset API如何操作数据库,以及如何使用Spark Streaming实时处理数据库流数据,是Spark与数据库...

    Mongodb数据库和可视化工具robo3t-1.3.1安装包

    - 集合与表:在MongoDB中,数据库包含多个集合,类似于关系数据库中的表格,但没有固定的列数量和顺序。 - 分片与复制:MongoDB支持水平扩展,通过分片将数据分布在多个服务器上,以提高性能和容错能力。复制集则...

    图数据库-架构与算法

    在并行图数据库场景下,邻接表更为常见,因为它能有效减少内存消耗,并简化数据的管理和访问。 #### 五、图数据库分类 根据应用场景的不同,图数据库大致可以分为两类: - **在线查询类**:这类图数据库强调低...

    大数据技术原理与应用-第四章-分布式数据库HBase(2016年1月28日版本).ppt

    2) 数据操作:HBase操作简单,无复杂表连接,而关系数据库支持复杂的多表操作。 3) 存储模式:HBase基于列存储,而关系数据库基于行存储。 4) 数据索引:HBase只有一个行键索引,关系数据库可以建立多索引。 5) 数据...

    Hadoop与 Oracle 数据库集成.pdf

    这是Oracle提供的另一种连接Hadoop和Oracle数据库的工具。它使得用户能够利用Hadoop的计算能力来处理Oracle数据库中的数据,从而实现更高效的分析和处理流程。 #### 三、总结 Hadoop与Oracle数据库的集成为企业提供...

    数据库原理课程教学讲义(教师补充)

    教师补充部分可能包含数据库安全性的内容,如用户权限管理、角色、访问控制机制、审计日志等,这些都是保护数据库免受未授权访问和恶意攻击的关键措施。 五、事务处理与并发控制 数据库中的事务处理是保证数据一致...

    数据库navicate 12 最新说明

    NavicatCloud是一项集成在Navicat中的云服务,允许用户安全地存储数据库连接信息,并在多台设备间同步这些信息。此外,用户还可以协作编辑和共享数据库对象。 **管理NavicatCloud** 用户可以通过登录NavicatCloud...

Global site tag (gtag.js) - Google Analytics