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 ...
随机推荐
- HTTP之Response状态码
Status-Code - 1xx: Informational - Request received, continuing process - 2xx: Success - The action ...
- BZOJ4870:[SHOI2017]组合数问题(组合数学,矩阵乘法)
Description Input 第一行有四个整数 n, p, k, r,所有整数含义见问题描述. 1 ≤ n ≤ 10^9, 0 ≤ r < k ≤ 50, 2 ≤ p ≤ 2^30 − 1 ...
- 【[HAOI2015]树上染色】
这道题真是非常神仙 第一眼看到题面肯定能想到状态是\(dp[i][j]\)表示\(i\)这棵子树里染了\(j\)个黑点的最大值 最大值? 什么最大值,之后就会发现这个样子完全没有办法转移 所以我们考虑 ...
- 【[CQOI2015]选数】
这道题自然是可以反演的 按照反演的套路我们先设出两个函数 \(F(n)\)表示从\([L,H]\)中任选\(N\)个数的最大公约数是\(n\)或者\(n\)的倍数的情况数 \(f(n)\)表示从\([ ...
- useradd添加用户
sudo useradd -m -s /bin/bash $user sudo passwd $user linux useradd/userdel 命令 转自:http://hi.baidu.com ...
- 在 Oracle Linux 6.5 上安装 Oracle 11g 单实例数据库
Checking the Hardware Requirements 系统必须满足下面最小的硬件要求 Memory Requirements Minimum: 1 GB of RAMRecommend ...
- iOS文本文件的编码检测
windows上很多文本未必是用UTF8,所以在iOS上读取的时候,如何得到文件的编码是个问题.网上有很多读取中文的例子,但是那些不够通用.比如说要读取日文,韩文,阿拉伯文等等的时候,就不行了(虽然一 ...
- Angular7教程-05-搭建项目环境
1. 本节说明 本节以及后面的内容我们将会通过搭建一个简单的博客程序来对angular进行介绍,项目使用前端框架是bootstrap.版本v3.3.7,另外需要安装jquery.关于bootstrap ...
- BZOJ 2654: tree(二分 最小生成树)
Time Limit: 30 Sec Memory Limit: 512 MBSubmit: 2901 Solved: 1196[Submit][Status][Discuss] Descript ...
- attr 和 prop的区别
attr 返回的是字符串 prop 返回的是布尔值