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. Xcode 下删除Provisioning Profiles文件

    Xcode 中有很多不可以用的Provisioning Profiles 文件,每次选择手机证书时,看着那么长的菜单很烦有木有? 在Xcode 5中删除 Provisioning Profiles,打 ...

  2. WebApplicationContext初始化

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

  3. mysql 无法插入中文

    MySQL数据库默认编码已经是utf8了, default-character-set = utf8,可是向数据库中表中插入中文时,却老是出现 ....\xB5\xA5\xD1\xA1 for col ...

  4. 从Windows角度看Mac OS X上的软件开发

    如果原来从事Windows软件开发,想跨足或转换至Mac OS X环境,需要知道那些东西?有什么知识技能可以快速运用在Mac OS X环境上的?这两个问题应该是Windows开发者进入Mac OS X ...

  5. P2453 [SDOI2006]最短距离

    题目描述 一种EDIT字母编辑器,它的功能是可以通过不同的变换操作可以把一个源串X [l..m]变换为新的目标串y[1..n].EDIT提供的变换操作有: 源串中的单个字符可被删除(delete): ...

  6. mongodb常用语句

    一.查询 find方法 db.collection_name.find(); 查询所有的结果: select * from users; db.users.find(); 指定返回那些列(键): se ...

  7. 与班尼特·胡迪一起找简单规律(HZOJ-2262)

    与班尼特·胡迪一起找简单规律 Time Limit:  1 s      Memory Limit:   256 MB Description 班尼特·胡迪发现了一个简单规律 给定一个数列,1 , 1 ...

  8. EF CodeFirst 数据库初始化策略

    最近用EF做了几个小东西,了解简单使用后有了深入研究的兴趣,所以想系统的研究一下EF CodeFist的几个要点.下面简单列一下目录 1.1 目录 数据库初始化策略和数据迁移Migration的简单介 ...

  9. java线程之线程同步

    本篇由于涉及多线程操作,所以线程是使用实现Runnable接口来创建的. 在上篇所示线程任务中,我们不难发现,是存在三步操作的: 第一:打印语句: 第二:计算sum=sum-1: 第三:线程休眠. 那 ...

  10. 转载《分布式任务调度平台XXL-JOB》

    <分布式任务调度平台XXL-JOB>       博文转自 https://www.cnblogs.com/xuxueli/p/5021979.html 一.简介 1.1 概述 XXL-J ...