1. 程式人生 > >hbase phoenix批量插入資料例子

hbase phoenix批量插入資料例子

package com.hbase;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Random;


import com.salesforce.phoenix.jdbc.PhoenixConnection;


public class TestPhoenix {


public static void main(String[] args) {
PhoenixConnection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;

try{
Class.forName("com.salesforce.phoenix.jdbc.PhoenixDriver");
conn = (PhoenixConnection) DriverManager.getConnection("jdbc:phoenix:vnode121,vnode122,vnode123");
conn.setAutoCommit(false);
int upsertBatchSize = conn.getMutateBatchSize();
String upsertStatement = "upsert into youku values(?,?,?,?)";
stmt = conn.prepareStatement(upsertStatement);
int rowCount = 0;
for(int i=0; i<100000000; i++) {   
    Random r = new Random();    
    int d = r.nextInt(1000);    
    String id = "id"+i;
          String name = "name"+d;
          int click = r.nextInt(100);
          float time = r.nextFloat()*100;
          stmt.setString(1, id);
          stmt.setString(2, name);
          stmt.setInt(3, click);
          stmt.setFloat(4, time); 
    stmt.execute();
     // Commit when batch size is reached
          if (++rowCount % upsertBatchSize == 0) {
              conn.commit();
              System.out.println("Rows upserted: " + rowCount);
          }
}
conn.commit();
} catch(ClassNotFoundException e) {
e.printStackTrace();
} catch(SQLException e) {
e.printStackTrace();
} finally{
try{
if(rs!=null) {
rs.close();
}
if(stmt!=null) {
stmt.close();
}
if(conn!=null) {
conn.close();
}

} catch(SQLException e) {
e.printStackTrace();
}
}


}


}

相關推薦

hbase phoenix批量插入資料例子

package com.hbase; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSe

mybatis oracle兩種方式批量插入資料

<insert id="addBatch" parameterType="java.util.List">       BEGIN      &

MYSQL 批量插入資料 insert into ON DUPLICATE KEY UPDATE

#批量插入並根據重複資料進行處理 class DF_MYSQL(DBBase):     #定義操作更新時間相關的方法     #獲取上次更新的時間     def __del__(self):       &

35. 批量插入資料,不使用replace操作

題目描述 對於表actor批量插入如下資料,如果資料已經存在,請忽略,不使用replace操作 CREATE TABLE IF NOT EXISTS actor ( actor_id smallint(5) NOT NULL PRIMARY KEY, first_name varchar(45)

34. 批量插入資料

題目描述 對於表actor批量插入如下資料 CREATE TABLE IF NOT EXISTS actor ( actor_id smallint(5) NOT NULL PRIMARY KEY, first_name varchar(45) NOT NULL, last_name varch

Java之JDBC批量插入資料

普通插入方式 10萬條資料,耗時13秒。。。 private String url = "jdbc:mysql://localhost:3306/test01"; private String user = "root"; private String password

Hibernate入門 批量插入資料

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

【python】爬蟲篇:python使用psycopg2批量插入資料(三)

本人菜雞,有什麼錯誤,還望大家批評指出,最近在更新python的爬蟲系列,○( ^皿^)っHiahiahia… 該系列暫時總共有3篇文章,連線如下 【python】爬蟲篇:python連線postgresql(一):https://blog.csdn.net/lsr40/article/de

【mybatis】mybatis oracle批量插入資料

參考:mybatis 對 oracle 的批量操作:https://blog.csdn.net/dzhuqiaolun/article/details/54864521 寫法一: <insert id="insertAttractionsBatch" parameterType="ja

資料庫之間批量插入資料

package comnf147Package; import java.sql.*; public class DateMigrationLagou { //連線SQLite private Connection getSqlite() throws Exception

資料庫SQL實踐34:批量插入資料

思路: 運用insert into 表名 (列名1,列名2,列名3....)values (values1,values2,....),(values1,values2,....)...; 1.當給所有列插入資料時,加粗的列名可以省略不寫 2.每條資料用逗號分隔,從而實現批量插入 i

資料庫SQL實踐35:批量插入資料,不使用replace操作

思路: SQLite如果不存在則插入,如果存在則忽略 INSERT OR IGNORE INTO tablename VALUES(...); 如果不存在則插入,如果存在則替換 INSERT OR REPLACE INTO tablename VALUES(...); 這裡指的存

EF批量插入資料耗時對比

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace EF批量插入 { class Progra

Mybatis 進行批量插入資料時,處理已經存在的資料

假設存在一張 學生表:{姓名,年齡,年級} 假設已經存在了小明,小王等學生 這時候將姓名設定為唯一的主鍵或者索引 insert into 學生表 (姓名,年齡,年級) values <foreach collection="list" item="item" separator=

MyBatis+Oracle用foreach標籤實現批量插入資料以及主鍵自增

1.前言          最近做一個批量匯入影像的需求,將多條記錄批量插入資料庫中。解決思路:在程式中封裝一個List集合物件,然後把該集合中的實體插入到資料庫中,因為專案使用了MyBatis,所以打算使用MyBatis的foreach功能進行批量插入。資料庫用的是Ora

Mysql優化批量插入資料

最近為了測試專案,需要在Mysql中插入百萬級測試資料,於是用到了批量插入,自己寫了個簡單的Spring Cloud專案。 開始時執行效率很慢,大概100條/秒,批次的大小也試過1000,2000,5000這三個級別,效率還是很低。 查閱資料發現,mysql連線需要加上 rewriteBatchedSt

Redis利用管道批量插入資料

首先需要構造資料的基本格式,如命令   hmset news105 news_title title105 news_content content105 news_views 28 拆分成以下格式: *8 // 按空格拆分有幾段 $5

python實現Phoenix批量匯入資料

官網文件: Phoenix provides two methods for bulk loading data into Phoenix tables: Single-threaded client loading tool for CSV formatted data

【SQL Server 批量插入資料

在SQL Server 中插入一條資料使用Insert語句,但是如果想要批量插入一堆資料的話,迴圈使用Insert不僅效率低,而且會導致SQL一系統效能問題。下面介紹SQL Server支援的兩種批量資料插入方法:Bulk和表值引數(Table-Valued Paramet

用SQL儲存過程實現批量插入資料

1,單條插入 INSERT INTO time_by_day   (time_id, the_date, the_year, month_of_year, quarter,day_of_month) VALUES ('1101', '1999-10-1', '1999', '10', 'Q4','1'