我们可能会有一个疑问,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 的类也贴出来,如果认为有需要的话
贴出来 欢迎大家板砖,本人也是学习没多久,希望大家踊跃提意见,也好提高自己
分享到:
相关推荐
使用spark读取hbase中的数据,并插入到mysql中
该案例中主要使用MapReduce作为处理组件进行数据处理,实现的案例有如通过javaapi实现hbase数据写入hdfs、hbase表数据复制到另一个表中等操作 对应(《HBase分布式存储系统应用》胡鑫喆 张志刚著)教材中案例
hadoop1.1.2操作例子 包括hbase hive mapreduce相应的jar包
mapreduce方式入库hbase hive hdfs,速度很快,里面详细讲述了代码的编写过程,值得下载
HBase MapReduce完整实例.rar
kettle集群搭建以及使用kettle将mysql数据转换为Hbase数据
根据mysql中数据库配置表信息查询mysql中数据,将部分处理为json格式,上传到hbase中。
Eclipse工程 HBase MapReduce完整实例 可远程执行 包含HBase增删改查 执行Test可看到效果
java操作Hbase之从Hbase中读取数据写入hdfs中源码,附带全部所需jar包,欢迎下载学习。
#资源达人分享计划#
NULL 博文链接:https://jsh0401.iteye.com/blog/2096103
htabse 命令的基本操作步骤,1.熟悉使用HBase操作常用的Shell命令。 2.学会表和族的属性操作。 3.学会Filter操作。 4.学会时间戳和数据版本的操作。 学会数据批量导入。
HBase的 HBase MapReduce投影
对Hadoop中的HDFS、MapReduce、Hbase系列知识的介绍。如果想初略了解Hadoop 可下载观看
HDFS+MapReduce+Hive+HBase十分钟快速入门.pdf
│ Day16[Hbase 企业应用及与MapReduce集成].pdf ├─02_视频 │ Day1601_Hbase Java API-环境配置.mp4 │ Day1603_Hbase Java API-put、delete.mp4 │ Day1604_Hbase Java API-Scan和过滤器.mp4 │ Day1605_Hbase...
hbase-rdd, 从HBase读取并写入 RDD ? 这个项目允许将 Apache Spark 连接到 HBase 。 现在可以在 Scala 2.10和版本 2.11上使用Spark和 CDH5.0. 版本,在版本/版本 0.2.2-SNAPSHOT 工作时使用Spark和版本
人工智能-hadoop
利用hadoop的mapreduce把oracle/mysql中的数据导入到hbase和hdfs中的两个java程序