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

Hbase通过 Mapreduce 写入数据到Mysql

 
阅读更多

我们可能会有一个疑问,hadoop是一种分布式存储和分布式计算的一个开源项目,而Mapreduce 也是基于此的一个分布式计算的模型,而基于分布式存储的列存储数据库Hbase应该是我们要讨论的话题,为什么会说到Mysql

其实Hbase 存储的数据时一些量大简单而有规则的数据,但关系型数据库也有他的优势,那就是提供了友好的方面我们操作的用户接口,我们可以实现简单的查询。并且数据本身并不大,而我们又需要对此数据进行各种复杂的分析和查询,那关系型数据库则帮我们实现。

从Hbase map出数据如何写入Mysql 从网上查估计也能查询到,但是可能不太友好,我做了一个简单的例子,贴出来供大家参考,希望对大家有些帮助。

习惯从main 方法谈起 看代码:

public static void main(String[] args) throws Exception {
Configuration conf = HBaseConfiguration.create();
//在此我用到了 旧的API ,因为我从资料上找不出新的API中有支持DBOutputFormat 的接口或者方法

//希望大家 如果了解这方面的 给我提出意见 我也了解一下新的API中如何实现此功能

JobConf job = new JobConf(conf,CopyHbaseData2Mysql.class);
job.setJarByClass(CopyHbaseData2Mysql.class);
//设定Job 输入类型为 TableInputFormat.class

job.setInputFormat(TableInputFormat.class);

//旧的API 没有 设置输入表的地方,如果看过Hadoop TableInputFormat 的源码 就可以看到下面两个参数 可以设定 输入表 和查询hbase 的columns

job.set("mapred.input.dir", "hbase_table");
job.set("hbase.mapred.tablecolumns", "info:column");//查询column

//下面两个方法是map的输入的key和value 类型
job.setMapOutputKeyClass(ImmutableBytesWritable.class);
job.setMapOutputValueClass(ImmutableBytesWritable.class);
//设定 输入类型为 DBOutputFormat.class

job.setOutputFormat(DBOutputFormat.class);
// 下面是配置 mysql 驱动以及 用户名密码

//此时一定要注意不论是编译还是 打包,都必须把mysql的驱动加入的环境变量中

//此处还要注意的是 192.168.10.10如果是在本机跑,一定要注意你的mysql 用户是否支持远程访问,不然 会拒绝连接
DBConfiguration.configureDB(job, "com.mysql.jdbc.Driver", "jdbc:mysql://192.168.10.10/test", "username", "password");

//下面是 输入表以及相应字段的设定
String[] fields = {"id","username"};
DBOutputFormat.setOutput(job, "user_info", fields);

//设定Map和Reduce
job.setMapperClass(MyMapper.class);
job.setReducerClass(MyReducer.class);

//run
JobClient.runJob(job);

}

其实写到这基本上就把具体的流程全部写出来了,候选的map 和reduce 根据大家相关的业务大家自己组织,但是还有一个重要的概念,此处的

我们的输入 为 :DBWritable 为此类为一个接口,并没有实现,所以我们要使用的时候必须 实现这个接口,去实现自己的 Writable类

先不做介绍了。

后续我会把实现DBWritable 的类也贴出来,如果认为有需要的话

贴出来 欢迎大家板砖,本人也是学习没多久,希望大家踊跃提意见,也好提高自己

分享到:
评论

相关推荐

    java代码将mysql表数据导入HBase表

    数据迁移的核心在于编写Java代码,将MySQL中的数据读取并写入到HBase中。这里我们使用JDBC连接MySQL,使用HBase Java API操作HBase。以下是一个简单的示例: ```java import org.apache.hadoop.conf.Configuration;...

    Hive、MySQL、HBase数据互导

    - 编写代码,使用Table和Put对象将数据从本地文件读取并写入到HBase表中。 - 编译并运行Java程序,完成数据导入。 在整个过程中,确保所有组件的版本兼容,例如HBase与Hadoop、Sqoop与Hadoop之间的版本匹配。同时...

    基于Mysql的表转HBase小Demo

    在这个Demo中,你将找到如何设计Dao层来实现Mysql到HBase的数据迁移。 1. **数据模型转换**:Mysql使用表格形式存储数据,每行数据有固定的列,而HBase则以行键(Row Key)、列族(Column Family)、列限定符...

    hadoop的mapreduce把oracle/mysq导入到hbase和hdfs中的程序

    标题中的“hadoop的mapreduce把oracle/mysq导入到hbase和hdfs中的程序”指的是一项数据处理任务,利用Hadoop的MapReduce框架,将关系型数据库(如Oracle和MySQL)中的数据高效地迁移至分布式存储系统HDFS(Hadoop ...

    hbase海量数据的全量导入方法

    ### HBase海量数据全量导入方法详解 在大数据领域,HBase作为一款分布式、...通过深入理解HBase的数据结构和Hadoop生态的集成方式,我们可以更好地设计和实施大数据导入方案,充分发挥HBase在大数据处理领域的优势。

    关系型数据库的数据导入Hbase

    关系型数据库(如MySQL、Oracle、SQL Server等)与非关系型数据库(如Hbase)在数据存储和处理上有着显著的区别。关系型数据库遵循ACID(原子性、一致性、隔离性和持久性)原则,适合结构化数据的存储,而Hbase作为...

    java2hbase.rar

    2. **HBaseBulkLoad**:HBase提供的工具,允许大量数据通过HFile格式批量加载,提高效率。 3. **MapReduce**:Hadoop的并行处理框架,可用于分布式数据转换和加载。 4. **HBase Coprocessors**:可以在HBase服务器...

    电影推荐网站(基于hadoop生态的大数据项目,使用hbase和MySQL数据库,利用协同过滤算法给出用户电影推荐).zip

    在电影推荐项目中,这些步骤都会涉及,例如从各种来源收集用户数据,清洗去除异常值,存储到Hadoop系统,通过MapReduce进行分析,最后将结果展示给用户。 8. **数据挖掘**:在推荐系统中,数据挖掘是寻找用户兴趣...

    Difference between HBase and RDBMS

    - HBase主要通过Java API或类似HBase shell的工具进行操作,查询功能相对简单,但在大数据处理中可以配合MapReduce或Spark进行高效计算。 6. 应用场景: - RDBMS适用于需要事务处理、复杂查询和数据一致性的业务...

    hadoop中Map-Reduce使用示例,输入(DBInputFormat),输出(DBOu-MR_HBase.zip

    这个示例,"MR_HBase-Hadoop中的MapReduce使用示例,输入(DBInputFormat),输出(DBOutputFormat)",主要展示了如何利用MapReduce与HBase进行交互,进行数据的读取和写入。下面将详细介绍相关的知识点。 1. **...

    面向海量天文数据的分布式MySQL锥形检索研究.pdf

    本文主要介绍了一种针对海量天文数据的分布式MySQL锥形检索的研究方法,使用数据库中间件技术,通过分库分表的方式将数据存储到分布式数据库集群中,并通过动态索引工具建立伪球面索引,以此来满足锥形检索的需求。...

    中国HBase技术社区第4届-MeetUp-上海站_基于HBase实时数仓探索实践.pptx

    【标题】:“中国HBase技术社区第4届-MeetUp-上海站_基于HBase实时数仓探索实践.pptx...通过上述实践,上海久耶供应链成功地运用HBase和相关技术构建了实时数仓,满足了互联网行业的实时数据需求,提高了业务决策效率。

    读写数据库数据的mr程序

    本程序的标题是"读写数据库数据的mr程序",这意味着我们将探讨如何利用MapReduce来从MySQL数据库读取数据,并将这些数据存储到HBASE这种分布式数据库中。这个过程通常被称为ETL(Extract, Transform, Load)操作,是...

    23-Sqoop数据导入导出1

    2. **MySQL到HBase**: - 配置HBase:确保HBase运行正常,创建相应的表结构。 - 导入数据:使用Sqoop命令,指定HBase的表名和列族,将MySQL数据导入HBase。 3. **MySQL到Hive**: - 配置Hive:创建与MySQL表结构...

    Hadoop集群之—MySQL关系数据库_V1.0

    而当需要将数据输出到MySQL数据库时,MapReduce作业则可能包含一个Reducer类,它将处理后的结果转换为适合存储到MySQL的数据格式,并写入数据库中。 文档还提到了一些实用的参考链接和编辑信息,以及对作者的支持...

    日志分析1

    - 数据导入HBase:通过Java API编写MapReduce程序,Map阶段清洗数据,Reducer阶段将数据写入HBase。注意,如果数据导入不完整,可能是因为rowkey设计问题,可以考虑使用HBase的export工具进行导入。 - 数据导入...

    mr程序代码

    MapReduce可以用来批量导入数据到HBase,或者对HBase中的数据进行批处理分析。在代码中,可能会有相关的示例展示如何使用MapReduce与HBase API交互,进行数据的读取、写入和更新。 最后,提到的关系型数据库通常指...

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

    2. Sqoop会读取HDFS中的数据,创建对应的SQL语句,并通过MapReduce作业执行,将数据写入MySQL。 ### 四、创建job 创建Sqoop作业是为了持久化导入或导出的配置,这样可以在将来重复使用而无需每次都手动输入参数。...

    Hadoop数据仓库工具hive介绍.pdf

    这种方式下,Hive首先执行MapReduce作业生成结果,然后通过HBase的API将结果写入相应的表中。这有助于提高数据的读取速度,尤其是在需要频繁查询同一组数据的情况下。 综上所述,Hive作为一种基于Hadoop的数据仓库...

    大数据 76 道面试题及答案.docx

    "大数据76道面试题及答案" 本文档包含了76道大数据...Sqoop在导入数据到MySQL中,如何不重复导入数据,可以通过增加参数来实现。如果存在数据问题,Sqoop可以通过 FAILED java.util.NoSuchElementException来处理。

Global site tag (gtag.js) - Google Analytics