Cassandra   window使用

1.        下载:http://cassandra.apache.org/download/

2.        解压后,bin目录下,cassandra.bat 直接启动。 Cassandra-cli.bat进入cassandra。

3.        安装python2.7.10 版本太高,可能会不兼容,安装python 使用 CQL 操作cassandra数据库。

4.        配置环境变量后,以管理员方式运行 cmd  :

powershell Set-ExecutionPolicy Unrestricted    成功如下:

5.   cmd  cqlsh.bat进入cql编辑;(没有安装python 无法使用cqlsh.bat)

CREATE KEYSPACE IF NOT EXISTS pimin_net

WITH REPLICATION = {'class': 'SimpleStrategy','replication_factor':1};

USE pimin_net;

CREATE TABLE IF NOT EXISTS users (

id uuid,

first_name varchar,

last_name varchar,

age int,

emails set<text>,

avatar blob,

PRIMARY KEY (id)

);

SELECT * FROM users;

用户表(users)包含了主键、firest_name、last_name、年龄、多个邮箱地址以及头像。关于使用java驱动,建议使用eclipse+maven创建,比如我们创建一个cassandra.test的工程。在pom.xml里面加入

<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>2.1.0</version>
</dependency>

1

2

3

4

5

<dependency>

<groupId>com.datastax.cassandra</groupId>

<artifactId>cassandra-driver-core</artifactId>

<version>2.1.0</version>

</dependency>

如果环境不允许使用maven,那么就自己找依赖包吧:cassandra-driver-core-2.1.0.jar、netty-3.9.0.Final.jar、guava-16.0.1.jar、metrics-core-3.0.2.jar和slf4j-api-1.7.5.jar。

解压目录 lib和 apache-cassandra-2.1.16\tools\lib 下,有jar包。

下面是所有java测试代码:实现连接Cassandra集群,新增数据,查询数据。其他的情况类似。

如果需要远程连接,那么cassandra.yaml里面的rpc_address就需要改变为您当前环境实际的IP地址,否则会报错! 本地:client.connect("127.0.0.1");

package cassandra;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.nio.ByteBuffer;

import java.nio.channels.FileChannel;

import java.util.HashSet;

import java.util.Set;

import java.util.UUID;

import com.datastax.driver.core.BoundStatement;

import com.datastax.driver.core.Cluster;

import com.datastax.driver.core.Host;

import com.datastax.driver.core.Metadata;

import com.datastax.driver.core.PreparedStatement;

import com.datastax.driver.core.ResultSet;

import com.datastax.driver.core.Row;

import com.datastax.driver.core.Session;

public class TestJava {

private Cluster cluster;

private Session session;

public Cluster getCluster() {

return cluster;

}

public void setCluster(Cluster cluster) {

this.cluster = cluster;

}

public Session getSession() {

return session;

}

public void setSession(Session session) {

this.session = session;

}

/**

* 连接节点

*

* @param node

*/

public void connect(String node) {

cluster = Cluster.builder().addContactPoint(node).build();

Metadata metadata = cluster.getMetadata();

System.out.printf("Connected to cluster: %s\n",      metadata.getClusterName());

for (Host host : metadata.getAllHosts()) {

System.out.printf("Datatacenter: %s; Host: %s; Rack: %s\n",      host.getDatacenter(), host.getAddress(), host.getRack());

}

this.session = cluster.connect();

}

public void insertData() {

PreparedStatement insertStatement = getSession().prepare(

"INSERT INTO pimin_net.users "

+ "(id, first_name, last_name, age, emails,avatar) "

+ "VALUES (?, ?, ?, ?, ?, ?);");

BoundStatement boundStatement = new BoundStatement(insertStatement);

Set<String> emails = new HashSet<String>();

emails.add("xxx@qq.com");

emails.add("xxx@163.com");

java.nio.ByteBuffer avatar = null;

try {

avatar = toByteBuffer("f:\\user.png");

avatar.flip();

System.out.println("头像大小:" + avatar.capacity());

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

getSession().execute(boundStatement.bind(UUID.fromString("756716f7-2e54-4715-9f00-91dcbea6cf50"),

"pi", "min", 10, emails, avatar));

}

public void loadData() {

ResultSet resultSet = getSession().execute(

"SELECT first_name,last_name,age,avatar FROM pimin_net.users;");

System.out

.println(String

.format("%-30s\t%-20s\t%-20s\n%s", "first_name","last_name", "age",

"-------------------------------+-----------------------+--------------------"));

for (Row row : resultSet) {

System.out.println(String.format("%-30s\t%-20s\t%-20s",

row.getString("first_name"), row.getString("last_name"),

row.getInt("age")));

ByteBuffer byteBuffer = row.getBytes("avatar");

System.out.println("头像大小:" + (byteBuffer.limit() - byteBuffer.position()));

FileOutputStream fileOutputStream = null;

try {

fileOutputStream = new FileOutputStream("f:\\2.png");

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

try {

fileOutputStream.write(byteBuffer.array(),

byteBuffer.position(),

byteBuffer.limit() - byteBuffer.position());

fileOutputStream.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

System.out.println();

}

public void close() {

cluster.close();

}

/**

* 读取文件

*

* @param filename

* @return

* @throws IOException

*/

public static ByteBuffer toByteBuffer(String filename) throws IOException {

File f = new File(filename);

if (!f.exists()) {

throw new FileNotFoundException(filename);

}

FileChannel channel = null;

FileInputStream fs = null;

try {

fs = new FileInputStream(f);

channel = fs.getChannel();

ByteBuffer byteBuffer = ByteBuffer.allocate((int) channel.size());

while ((channel.read(byteBuffer)) > 0) {

// do nothing

// System.out.println("reading");

}

return byteBuffer;

} catch (IOException e) {

e.printStackTrace();

throw e;

} finally {

try {

channel.close();

} catch (IOException e) {

e.printStackTrace();

}

try {

fs.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

public static void main(String[] args) {

TestJava client = new TestJava();

client.connect("127.0.0.1");

client.insertData();

client.loadData();

client.session.close();

client.close();

}

}

cassandra 在window上的demo的更多相关文章

  1. jquery.form 和MVC4做无刷新上传DEMO

    jquery.form 和MVC4做无刷新上传DEMO HTML: <script src="~/Scripts/jquery-1.10.2.min.js"></ ...

  2. TensorFlow 在android上的Demo(1)

    转载时请注明出处: 修雨轩陈 系统环境说明: ------------------------------------ 操作系统 : ubunt 14.03 _ x86_64 操作系统 内存: 8GB ...

  3. window上利用pip安装pandas

    官网推荐的是直接使用Anoconda,它集成了pandas,可以直接使用.安装挺简单的,有windows下的安装包.如果不想安装庞大的Anoconda,那就一步一步用pip来安装pandas.下面我主 ...

  4. 在window上安装pandas

    之前在ubuntu上安装pandas,用的easy_install.这次在window上同样方法装遇到"unable to find vcvarsall.bat",看一些网上帖子好 ...

  5. iOS UIButton加在window上点击无效果问题

    UIButton加在window上,点击没有效果,找了很久,原来是没有加上这名:[self.window makeKeyAndVisible]; self.window = [[UIWindow al ...

  6. 【原】window上安装elasticserach

    [window上安装elasticserach] 系统环境:2008R2 x64测试安装用的服务器IP:192.168.12.52elasticsearch版本:2.3.4JDK版本:jdk 1.8. ...

  7. 往github上传demo

    一直在github上寻找demo,但怎么传demo上githun呢? http://www.2cto.com/kf/201504/390397.html 首先在github上 new一个reposit ...

  8. 关于Windows高DPI的一些简单总结(Window上一般默认是96 dpi 作为100% 的缩放比率)

    我们知道,关于高DPI的支持, Windows XP时代就开始有了, 那时关于高DPI的支持比较简单, 但是从Vista/Win7 到现在Win8 /Win8.1, Windows关于高DPI的支持已 ...

  9. Jetson TX2上的demo(原创)

    Jetson TX2上的demo 一.快速傅里叶-海动图 sample The CUDA samples directory is copied to the home directory on th ...

随机推荐

  1. 【48】java抽象类和接口的定义和区别

    首先看看他们的区别: 接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是Java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力. ...

  2. 【Qt编程】基于Qt的词典开发系列<十四>自动补全功能

    最近写了一个查单词的类似有道词典的软件,里面就有一个自动补全功能(即当你输入一个字母时,就会出现几个候选项).这个自动补全功能十分常见,百度搜索关键词时就会出现.不过它们这些补全功能都是与你输入的进行 ...

  3. WebApplicationContext初始化

    Spring 提供了用于启动WebApplicaionContext的Web容器监听器. 通过Web容器监听器引导: <!-- 1 指定配置文件 --> <context-param ...

  4. "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no freetype in java.library.path

    Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no freetype in java ...

  5. 杭电ACM 1004题

    原题大概意思就是统计输入字符串中,重复的最大个数! import java.util.Scanner; public class Main { public static void main(Stri ...

  6. 从零开始搭建基于CEFGlue的CB/S的winform项目

    基于CEF,用.net包装过的Xilium.CefGlue/3,基于此框架可以很方便在你的winform等C/S项目中搭建一个内建的浏览器 Chromium Embedded Framework (C ...

  7. 简单的Java逻辑小代码(打擂台,冒泡排序,水仙花数,回文数,递归)

    1.打擂台 简单的小代码,打擂台.纪念下过去,祝福下新人. public static void main(String[] args){ int[] ld = {1,4,2,10,8,9,5}; i ...

  8. Python可视化TVTK库初使用

    本周学习了初步的TVTK库的安装及使用方法,第一次通过tvtk.CubeSource方法建立了一个长方体对象.对TVTK的接触有了新的体会. 首先,在网上下载了以下五个库并按顺序通过pip指令在cmd ...

  9. 关于在vim中的查找和替换

    1,查找 在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车. Vim会跳转到第一个匹配.按下n查找下一个,按下N查找上一个. Vim查找支持正则表达式,例如/vim$匹配行尾的 ...

  10. javaScript(8)---对象和数组

    javaScript(8)---对象和数组 学习要点: 1.Object类型 2.Array类型 3.对象中的方法 什么是对象,其实就是一种类型,即引用类型.而对象的值就是引用类型的实例.在ECMAS ...