(轉)使用binary memtable 批量導資料到cassandra
package com.alibaba.dw.thrift.client;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.Column;
import org.apache.cassandra.db.ColumnFamily;
import org.apache.cassandra.db.RowMutation;
import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.io.util.DataOutputBuffer;
import java.net.InetAddress;
import org.apache.cassandra.net.Message;
import org.apache.cassandra.net.MessagingService;
import org.apache.cassandra.service.StorageService;
/**
* TODO Comment of BinaryMemtableTest
*
* @author aaron.guop
*/
public class BinaryMemtableTest {
/**
* @param args
* @throws IOException
* @throws InterruptedException
*/
public static void main(String[] args) throws IOException, InterruptedException {
System.setProperty("storage-config", "D:apache-cassandra-0.6.1conf");
StorageService.instance.initClient();
while (StorageService.instance.getNaturalEndpoints("Keyspace1", "bmt").isEmpty()) {
Thread.sleep(1 * 1000);
}
doInsert();
StorageService.instance.stopClient();
}
/**
* @throws UnsupportedEncodingException
*/
private static void doInsert() throws UnsupportedEncodingException {
String keyspace = "Keyspace1";
String cfName = "Member";
String memberID = "bmt";
/* Create a column family */
ColumnFamily columnFamily = ColumnFamily.create(keyspace, cfName);
//while (values.hasNext()) {
String SuperColumnName = "SuperColumnName";
String ColumnName = "ColumnName";
String ColumnValue = "ColumnValue";
long timestamp = 0;
columnFamily.addColumn(new QueryPath(cfName, SuperColumnName.getBytes("UTF-8"), ColumnName
.getBytes("UTF-8")), ColumnValue.getBytes(), timestamp);
//}
/* Get serialized message to send to cluster */
Message message = createMessage(keyspace, memberID, cfName, columnFamily);
for (InetAddress endpoint : StorageService.instance.getNaturalEndpoints(keyspace, memberID)) {
/* Send message to end point */
MessagingService.instance.sendOneWay(message, endpoint);
System.out.println("Send message to " + endpoint.toString());
}
}
public static Message createMessage(String Keyspace, String Key, String CFName,
ColumnFamily columnFamile) {
DataOutputBuffer bufOut = new DataOutputBuffer();
Column column;
/*
* Get the first column family from list, this is just to get past
* validation
*/
ColumnFamily baseColumnFamily = new ColumnFamily(CFName, "Standard", DatabaseDescriptor
.getComparator(Keyspace, CFName), DatabaseDescriptor.getSubComparator(Keyspace,
CFName));
bufOut.reset();
try {
ColumnFamily.serializer().serializeWithIndexes(columnFamile, bufOut);
byte[] data = new byte[bufOut.getLength()];
System.arraycopy(bufOut.getData(), 0, data, 0, bufOut.getLength());
column = new Column(columnFamile.name().getBytes("UTF-8"), data, 0, false);
baseColumnFamily.addColumn(column);
} catch (IOException e) {
throw new RuntimeException(e);
}
RowMutation rm = new RowMutation(Keyspace, Key);
rm.add(baseColumnFamily);
try {
/* Make message */
return rm.makeRowMutationMessage(StorageService.Verb.BINARY);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23937368/viewspace-1050213/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- excel導資料到PostgresqlExcelSQL
- Python批量匯入Excel資料到MySQLPythonExcelMySql
- GoldenGate實時投遞資料到大資料平臺(2)- CassandraGo大資料
- Java通過Mybatis實現批量插入資料到Oracle中JavaMyBatisOracle
- 用DataX導資料到Clickhouse遇到的坑
- 資料倉儲中從mysql導資料到oracleMySqlOracle
- sqoop導oracle資料庫的資料到hiveOOPOracle資料庫Hive
- 使用SqlBulkCopy批量插入或遷移資料(轉)SQL
- 使用mysqlimport匯入資料到mysqlMySqlImport
- 使用sqlldr載入外部檔案中的資料到Oracle中(轉)SQLOracle
- 使用Flume消費Kafka資料到HDFSKafka
- 使用sqlldr匯入文字資料到oracleSQLOracle
- Cassandra 資料模型模型
- Cassandra資料庫資料庫
- cassandra tombstone導致寫資料丟失問題徵解
- 使用Hector和Scala持久化Cassandra資料庫持久化資料庫
- 使用canal.adapter同步資料到MySQLAPTMySql
- 使用goldengate從mysql同步資料到oracleGoMySqlOracle
- 使用load data匯入資料到mysqlMySql
- 使用外部表關聯MySQL資料到OracleMySqlOracle
- 從 "垃圾 "資料到資料完整性的轉變
- 使用Spark和Cassandra進行資料處理(一)Spark
- 使用DataLakeAnalytics從OSS清洗資料到AnalyticDB
- 使用 EMQX Cloud 橋接資料到 GCP Pub/SubMQCloud橋接GC
- 利用Docker輕鬆玩轉CassandraDocker
- 使用MySqlBulkLoader批量插入資料MySql
- SpringBoot(18)---通過Lua指令碼批量插入資料到Redis布隆過濾器Spring Boot指令碼Redis過濾器
- Oracle使用RMAN從Windows遷移資料到LinuxOracleWindowsLinux
- 使用Direct-Path INSERT插入資料到表中
- proc插入資料到資料庫資料庫
- vb呼叫winInet API介面post資料到指定的url (轉)API
- 教你玩轉Linux—新增批量使用者Linux
- 使用Data Lake Analytics從OSS清洗資料到AnalyticDB
- 使用Spark載入資料到SQL Server列儲存表SparkSQLServer
- IOS 使用 POST、GET 提交 JSON 資料到伺服器iOSJSON伺服器
- Java不寫檔案,LOAD DATA LOCAL INFILE大批量匯入資料到MySQL的實現JavaMySql
- 使用VBA批量轉換Excel格式,由.xls轉換成.xlsxExcel
- Apache Cassandra 的 Spring 資料ApacheSpring