HBase——使用Put迁移MySql数据到Hbase
先上code:
/** * 功能:迁移mysql上电池历史数据到hbase * Created by liuhuichao on 2016/12/6. */ public class MySqlToHBase { /** * 获取表 * @param tableName * @return * @throws IOException */ private HTable connectHBase(String tableName) throws IOException{ HTable table=null; Configuration conf= HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum","lhc-centos"); table=new HTable(conf,tableName); return table; } /** * 获取mysql连接 * @return * @throws Exception */ private java.sql.Connection connectDB() throws Exception{ String userName="root"; String password="root"; String url="jdbc:mysql://10.0.1.42:3306/energy?useUnicode=true&characterEncoding=UTF-8"; Class.forName("com.mysql.jdbc.Driver").newInstance(); java.sql.Connection conn=DriverManager .getConnection(url,userName,password); return conn; } /** * 将电池历史数据表中输入导入HBase * @throws Exception */ @Test public void exportFromMySqlToHBase() throws Exception{ java.sql.Connection dbConn=null; HTable table=null; Statement stmt=null; String strQuery="SELECT * FROM `res_battery_data_history` limit 10000,1000000"; dbConn=connectDB();//连接mysql table=connectHBase("batteryDataHistory");//连接HBase try{ stmt=dbConn.createStatement(); ResultSet rs=stmt.executeQuery(strQuery); long beginTime=System.currentTimeMillis();//开始 System.out.println( "beginTime:---"+beginTime); while (rs.next()) { UUID uuid = UUID.randomUUID(); String rowKey = uuid.toString();//作为行健 Put put = new Put(Bytes.toBytes(rowKey)); /** * family:baseData */ // Integer id=rs.getInt("id"); String batteryNo = rs.getString("battery_no"); Integer batteryType = rs.getInt("battery_type"); Float voltageDeviation = rs.getFloat("voltage_deviation"); Float totalVoltage = rs.getFloat("total_voltage"); Float temprature1 = rs.getFloat("temprature1"); Float temprature2 = rs.getFloat("temprature2"); Float chargeNum = rs.getFloat("charge_num"); Float longtitude = rs.getFloat("longtitude"); Float latitude = rs.getFloat("latitude"); Float totalCurrent = rs.getFloat("total_current"); Float soc = rs.getFloat("soc"); put.add(Bytes.toBytes("baseData"), Bytes.toBytes("batteryNo"), Bytes.toBytes(batteryNo)); put.add(Bytes.toBytes("baseData"), Bytes.toBytes("batteryType"), Bytes.toBytes(batteryType)); put.add(Bytes.toBytes("baseData"), Bytes.toBytes("voltageDeviation"), Bytes.toBytes(voltageDeviation)); put.add(Bytes.toBytes("baseData"), Bytes.toBytes("totalVoltage"), Bytes.toBytes(totalVoltage)); put.add(Bytes.toBytes("baseData"), Bytes.toBytes("temprature1"), Bytes.toBytes(temprature1)); put.add(Bytes.toBytes("baseData"), Bytes.toBytes("temprature2"), Bytes.toBytes(temprature2)); put.add(Bytes.toBytes("baseData"), Bytes.toBytes("chargeNum"), Bytes.toBytes(chargeNum)); put.add(Bytes.toBytes("baseData"), Bytes.toBytes("longtitude"), Bytes.toBytes(longtitude)); put.add(Bytes.toBytes("baseData"), Bytes.toBytes("latitude"), Bytes.toBytes(latitude)); put.add(Bytes.toBytes("baseData"), Bytes.toBytes("totalCurrent"), Bytes.toBytes(totalCurrent)); put.add(Bytes.toBytes("baseData"), Bytes.toBytes("soc"), Bytes.toBytes(soc)); /** * family:volumnData */ Float vol1 = rs.getFloat("vol1"); Float vol2 = rs.getFloat("vol2"); Float vol3 = rs.getFloat("vol3"); Float vol4 = rs.getFloat("vol4"); Float vol5 = rs.getFloat("vol5"); Float vol6 = rs.getFloat("vol6"); Float vol7 = rs.getFloat("vol7"); Float vol8 = rs.getFloat("vol8"); Float vol9 = rs.getFloat("vol9"); Float vol10 = rs.getFloat("vol10"); Float vol11 = rs.getFloat("vol11"); Float vol12 = rs.getFloat("vol12"); Float vol13 = rs.getFloat("vol13"); Float vol14 = rs.getFloat("vol14"); Float vol15 = rs.getFloat("vol15"); Float vol16 = rs.getFloat("vol16"); Float vol17 = rs.getFloat("vol17"); Float vol18 = rs.getFloat("vol18"); Float vol19 = rs.getFloat("vol19"); put.add(Bytes.toBytes("volumnData"), Bytes.toBytes("v1"), Bytes.toBytes(vol1)); put.add(Bytes.toBytes("volumnData"), Bytes.toBytes("v2"), Bytes.toBytes(vol2)); put.add(Bytes.toBytes("volumnData"), Bytes.toBytes("v3"), Bytes.toBytes(vol3)); put.add(Bytes.toBytes("volumnData"), Bytes.toBytes("v4"), Bytes.toBytes(vol4)); put.add(Bytes.toBytes("volumnData"), Bytes.toBytes("v5"), Bytes.toBytes(vol5)); put.add(Bytes.toBytes("volumnData"), Bytes.toBytes("v6"), Bytes.toBytes(vol6)); put.add(Bytes.toBytes("volumnData"), Bytes.toBytes("v7"), Bytes.toBytes(vol7)); put.add(Bytes.toBytes("volumnData"), Bytes.toBytes("v8"), Bytes.toBytes(vol8)); put.add(Bytes.toBytes("volumnData"), Bytes.toBytes("v9"), Bytes.toBytes(vol9)); put.add(Bytes.toBytes("volumnData"), Bytes.toBytes("v10"), Bytes.toBytes(vol10)); put.add(Bytes.toBytes("volumnData"), Bytes.toBytes("v11"), Bytes.toBytes(vol11)); put.add(Bytes.toBytes("volumnData"), Bytes.toBytes("v12"), Bytes.toBytes(vol12)); put.add(Bytes.toBytes("volumnData"), Bytes.toBytes("v13"), Bytes.toBytes(vol13)); put.add(Bytes.toBytes("volumnData"), Bytes.toBytes("v14"), Bytes.toBytes(vol14)); put.add(Bytes.toBytes("volumnData"), Bytes.toBytes("v15"), Bytes.toBytes(vol15)); put.add(Bytes.toBytes("volumnData"), Bytes.toBytes("v16"), Bytes.toBytes(vol16)); put.add(Bytes.toBytes("volumnData"), Bytes.toBytes("v17"), Bytes.toBytes(vol17)); put.add(Bytes.toBytes("volumnData"), Bytes.toBytes("v18"), Bytes.toBytes(vol18)); put.add(Bytes.toBytes("volumnData"), Bytes.toBytes("v19"), Bytes.toBytes(vol19)); /** * family:extraData */ String remarks = rs.getString("remarks"); String testUserName = rs.getString("test_user_name"); String createTime = rs.getString("create_time"); Integer createUser = rs.getInt("create_user"); Integer source = rs.getInt("source"); put.add(Bytes.toBytes("extraData"), Bytes.toBytes("remarks"), Bytes.toBytes(remarks)); put.add(Bytes.toBytes("extraData"), Bytes.toBytes("testUserName"), Bytes.toBytes(testUserName)); put.add(Bytes.toBytes("extraData"), Bytes.toBytes("createTime"), Bytes.toBytes(createTime)); put.add(Bytes.toBytes("extraData"), Bytes.toBytes("createUser"), Bytes.toBytes(createUser)); put.add(Bytes.toBytes("extraData"), Bytes.toBytes("source"), Bytes.toBytes(source)); table.put(put); } }catch (Exception e){ e.printStackTrace(); } finally { try{ if(stmt !=null){ stmt.close(); } if(dbConn !=null){ dbConn.close(); } if(table!=null){ table.close(); } long endTime=System.currentTimeMillis();//开始 System.out.println( "endTime:---"+endTime); }catch(Exception e){ e.printStackTrace(); } } } }
结果:10000 row(s) in 218.0310 seconds
(我是单机版的HBase,未使用HDFS做底层存储。)
刚开始的sql没有加limit,直接上来把测试表里面的三百多万条直接插出来,结果还没查完,就堆栈溢出了;额。。。后来先塞了一万条到HBase,额,还好,速度很快,但是感觉这种导入方式不具有通用性,对于大量数据的导入是不ok的。
HBase——使用Put迁移MySql数据到Hbase的更多相关文章
- Sqoop导入mysql数据到Hbase
sqoop import --driver com.mysql.jdbc.Driver --connect "jdbc:mysql://11.143.18.29:3306/db_1" ...
- Sqoop将mysql数据导入hbase的血与泪
Sqoop将mysql数据导入hbase的血与泪(整整搞了大半天) 版权声明:本文为yunshuxueyuan原创文章.如需转载请标明出处: https://my.oschina.net/yunsh ...
- 迁移mysql数据到oracle上
转自:http://www.cnblogs.com/Warmsunshine/p/4651283.html 我是生成的文件里面的master.sql里面的sql,一个一个拷出来的. 迁移mysql数据 ...
- Linux Centos 迁移Mysql 数据位置
Linux Centos 迁移Mysql 数据位置 由于业务量增加导致安装在系统盘(20G)磁盘空间被占满了, 现在进行数据库的迁移. Mysql 是通过 yum 安装的. Centos6.5Mysq ...
- sqoop将mysql数据导入hbase、hive的常见异常处理
原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/10700700.html,否则将追究法律责任!!! 一.需求: 1.将以下这张表(test_ ...
- flink-cdc同步mysql数据到hbase
本文首发于我的个人博客网站 等待下一个秋-Flink 什么是CDC? CDC是(Change Data Capture 变更数据获取)的简称.核心思想是,监测并捕获数据库的变动(包括数据 或 数据表的 ...
- hbase 从hdfs上读取数据到hbase中
<dependencies> <dependency> <groupId>org.apache.hbase</groupId> <artifact ...
- Python迁移MySQL数据到MongoDB脚本
MongoDB是一个文档数据库,在存储小文件方面存在天然优势.随着业务求的变化,需要将线上MySQL数据库中的行记录,导入到MongoDB中文档记录. 一.场景:线上MySQL数据库某表迁移到Mong ...
- 使用Navicat迁移MySQL数据至Oracle时大小写原因报“表或视图不存在”问题处理
使用Navicat提供的数据传输工具将JEECMSv9的MySQL的数据迁移至Oracle数据库,数据迁移成功表都存在,但是在程序启动时提示表或视图不存在. Caused by: java.sql.S ...
随机推荐
- 在CentOS7上安装和使用ZooKeeper最新版本(V3.4.12)
0.ZooKeeper文档 http://zookeeper.apache.org/doc/r3.4.11/zookeeperOver.html 1.准备 在CentOS7上安装zookeeper时, ...
- asp,mdb,工具
<%set conn=Server.CreateObject("ADODB.Connection")conn.Provider="Microsoft.Jet.OLE ...
- Guava包学习-Cache
这段时间用到了ehcache和memcache,memcache只用来配置在tomcat中做负载均衡过程中的session共享,然后ehcache用来存放需要的程序中缓存. Guava中的Cache和 ...
- 【[NOI2010]超级钢琴】
我竟然又在写主席树 现在可是九月啦,我却还在写这种noip不可能考的算法 我觉得我真的要凉 题意很明确,就是给你一个序列,让从中选择\(k\)段连续的序列,长度必须大于等于\(L\)小于等于\(R\) ...
- math.random用法
Math.random():获取0~1随机数 Math.floor() method rounds a number DOWNWARDS to the nearest integer, and ret ...
- spring boot实战(第二篇)事件监听
http://blog.csdn.net/liaokailin/article/details/48186331 前言 spring boot在启动过程中增加事件监听机制,为用户功能拓展提供极大的便利 ...
- 改变random.seed()种子值,获取不同的随机值
random.seed() random.seed()是随机数种子,也就是为随机数提供算法,完全相同的种子产生的随机数列是相同的, 所以如果想产生不同的随机数就需要用当前时间作为种子 一般情况下see ...
- Mac 下 SVN 的使用
在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境.在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还 ...
- cmd命令操作Mysql数据库
在一次考试中,笔者因考试的电脑上没有安装操作Mysql数据库的可视化工具而不知如何操作数据库,所以在这里可以提醒各位掌握 命令行来操作数据库也是非常重要的. 笔者以惨痛的教训来警惕大家. 进入正题: ...
- 一个简单的Linux启动jar包的shell脚本
背景: 项目设备端需要运行jar包程序与服务端进行socket连接并发送数据,每次启动进程时,都需要在Linux终端输入启动jar包的命令,比较繁琐,随之尝试将启动jar包的命令写入shell脚本文件 ...