Windows環境下安裝Cassandra1.0.2

以Cassandra 1.0.2爲例。java

一、 安裝文件準備

下載Cassandra1.0.二、Jdk 1.7。(所有推薦最新版本)
Cassandra下載地址:http://cassandra.apache.org/download/
Jre下載地址:http://www.java.com/zh_CN/download/node

二、安裝JDK、Cassandra

(一)、安裝Jdk的過程很簡單,這裏不作說明。數據庫

(二) 解壓縮後得到目錄apache-cassandra-1.0.2apache

(三)、配置JDK、Cassandra系統環境變量api

一、配置JDK系統環境變量工具

二、配置Cassandra系統環境變量測試

三、將cassandra系統環境變量添加到JDK環境變量中spa

三、配置Cassandra

(1)修改其它地址.net

打開文件:cassandra.yaml,修改:code

data_file_directories: - D:\apache-cassandra-1.0.2\data

commitlog_directory: D:\apache-cassandra-1.0.2\commitlog

saved_caches_directory: D:\apache-cassandra-1.0.2\saved_caches

修改後的樣子以下:

data_file_directories:
    - F:\javadevelop\service\casssandra\apache-cassandra-1.0.2\data

commitlog_directory: F:\javadevelop\service\casssandra\apache-cassandra-1.0.2\commitlog

saved_caches_directory: F:\javadevelop\service\casssandra\apache-cassandra-1.0.2\saved_caches

四、啓動

(1)在命令提示符工具中啓動Cassandra:

(2)用nodetool工具確認Cassandra已經啓動:

五、測試

(1)運行cassadnra-cli:

(2)建立keyspace、column family,插入數據:

(3)獲取數據:

能夠正常執行,說明安裝成功。

六、Java客戶端代碼

(1)、建立java項目的過程很簡單,這裏不作說明。

(2)、將F:\javadevelop\service\casssandra\apache-cassandra-1.0.2\lib目錄下的jar所有拷貝到WEB-INF/lib目錄下;

(3)、建立客戶端java類,code以下:

package com.tzdr.api.controller;

import org.apache.cassandra.thrift.*;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TFramedTransport;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.util.List;
public class CassandraExample {

    public static void main(String[] args)
            throws TException, InvalidRequestException, UnavailableException, UnsupportedEncodingException, NotFoundException, TimedOutException {
        TTransport tr = new TFramedTransport(new TSocket("localhost", 9160));
        TProtocol proto = new TBinaryProtocol(tr);
        Cassandra.Client client = new Cassandra.Client(proto);
        tr.open();
 
        String key_user_id = "jsmith";     //row id
 
        client.set_keyspace("tzdrdevelop");     //指定keyspace
        ColumnParent parent = new ColumnParent("User");
        ColumnPath path = new ColumnPath("User");
 
        // 讀取單列內容
        path.setColumn(toByteBuffer("first"));
        ColumnOrSuperColumn col = (client.get(toByteBuffer(key_user_id), path, ConsistencyLevel.ONE));
        System.out.println(toString(col.column.name) + " -> " + toString(col.column.value));
 
        // 讀取所有列內容
        SlicePredicate predicate = new SlicePredicate();
        SliceRange sliceRange = new SliceRange(toByteBuffer(""), toByteBuffer(""), false, 10);
        predicate.setSlice_range(sliceRange);
 
        List<ColumnOrSuperColumn> results = client.get_slice(toByteBuffer(key_user_id), parent, predicate, ConsistencyLevel.ONE);
        for (ColumnOrSuperColumn result : results) {
            Column column = result.column;
            System.out.println(toString(column.name) + " -> " + toString(column.value));
        }
        // 向數據庫中插入數據
        long currentTimeMillis = System.currentTimeMillis();
        long nanoTime = System.nanoTime();
        long currentTimeMicros = currentTimeMillis * 1000 + nanoTime / 1000 - (nanoTime > 1000000 ? (nanoTime / 1000000) * 1000 : 0);
 
    //注意取microseconds,而不是milliseconds,由於其它客戶機都是microseconds。
    //若是使用System.currentTimeMillis()致使你的時間永遠小於其它客戶機的時間,使其操做會被忽略。
        System.out.println(currentTimeMicros);
 
        String new_key_user_id = "jsmith";     //row id
 
        Column nameColumn = new Column(toByteBuffer("name"));
        nameColumn.setValue(toByteBuffer("Chris Goffinet"));
        nameColumn.setTimestamp(currentTimeMicros);
        client.insert(toByteBuffer(new_key_user_id), parent, nameColumn, ConsistencyLevel.ONE);
 
        Column pwdColumn = new Column(toByteBuffer("password"));
        pwdColumn.setValue(toByteBuffer("12345678"));
        pwdColumn.setTimestamp(currentTimeMicros);
        client.insert(toByteBuffer(new_key_user_id), parent, pwdColumn, ConsistencyLevel.ONE);
 
        tr.flush();
        tr.close();
    }
 
    public static ByteBuffer toByteBuffer(String value)
            throws UnsupportedEncodingException {
        return ByteBuffer.wrap(value.getBytes("UTF-8"));
    }
 
    public static String toString(ByteBuffer buffer)
            throws UnsupportedEncodingException {
        byte[] bytes = new byte[buffer.remaining()];
        buffer.get(bytes);
        return new String(bytes, "UTF-8");
    }

}

相關文章
相關標籤/搜索