Tag: cassandra

Cassandra更新不一致

我在本地(mac)机器和远程unix服务器上运行以下代码: public void deleteValue(final String id, final String value) { log.info(“Removing value ” + value); final Collection valuesBeforeRemoval = getValues(id); final MutationBatch m = keyspace.prepareMutationBatch(); m.withRow(VALUES_CF, id).deleteColumn(value); try { m.execute(); } catch (final ConnectionException e) { log.error(“Unable to delete location ” + value, e); } final Collection valuesAfterRemoval = getValues(id); if (valuesAfterRemoval.size()!=(valuesBeforeRemoval.size()-1)) { log.error(“value ” […]

使用IN子句过滤Spark Cassandra连接器

我正面临着针对java的spark cassandra连接器过滤的一些问题。 Cassandra允许使用IN子句过滤分区键的最后一列。 例如 create table cf_text (a varchar,b varchar,c varchar, primary key((a,b),c)) Query : select * from cf_text where a =’asdf’ and b in (‘af’,’sd’); sc.cassandraTable(“test”, “cf_text”).where(“a = ?”, “af”).toArray.foreach(println) 我如何指定在spark中的CQL查询中使用的IN子句? 如何指定范围查询?

RDD不可序列化的Cassandra / Spark连接器java API

所以我之前对如何在java maven项目中使用spark查询cassandra有一些疑问: 在Java Maven项目中通过Spark查询Cassandra中的数据 好吧,我的问题得到了回答并且有效,但是我遇到了一个问题(可能是一个问题)。 我正在尝试使用datastax java API。 这是我的代码: package com.angel.testspark.test2; import org.apache.commons.lang3.StringUtils; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.api.java.function.Function; import java.io.Serializable; import static com.datastax.spark.connector.CassandraJavaUtil.*; public class App { // firstly, we define a bean class public static class Person implements Serializable { private Integer id; private String fname; private String lname; private String […]

Datastax java驱动程序3.0.0未找到枚举注释

希望我正在阅读文档: http : //docs.datastax.com/en/developer/java-driver/3.0/java-driver/reference/crudOperations.html 。 枚举注释 如果您的类包含枚举类型字段,则使用枚举注释。 我有一个Java枚举,我想使用@Enumerated注释,但我似乎无法在3.0.0版本的驱动程序中找到它,它出现在2.1.9中。 $ find . -type f -name \*.jar|while read i; do echo ====== $i =====; jar -tf $i|grep Enumerated; done ====== ./cassandra-driver-core/2.1.4/cassandra-driver-core-2.1.4-javadoc.jar ===== ====== ./cassandra-driver-core/2.1.4/cassandra-driver-core-2.1.4-sources.jar ===== ====== ./cassandra-driver-core/2.1.4/cassandra-driver-core-2.1.4.jar ===== ====== ./cassandra-driver-core/2.1.5/cassandra-driver-core-2.1.5.jar ===== ====== ./cassandra-driver-core/2.1.7.1/cassandra-driver-core-2.1.7.1.jar ===== ====== ./cassandra-driver-core/2.1.9/cassandra-driver-core-2.1.9.jar ===== ====== ./cassandra-driver-core/3.0.0/cassandra-driver-core-3.0.0-sources.jar ===== ====== ./cassandra-driver-core/3.0.0/cassandra-driver-core-3.0.0.jar ===== ====== ./cassandra-driver-dse/2.1.5/cassandra-driver-dse-2.1.5.jar ===== ====== […]

java-cassnadra object地址映射的冻结注释<text,frozen <list <frozen >>>,

我正在尝试将数据插入到Cassandra中(2.1.9)我的Java对象有一个UDT列表的映射。 在运行代码时,我收到有关@Frozen注释的错误。 我正在使用DataStax(2.1.9)库。 http://docs.datastax.com/en/drivers/java/2.1/index.html?com/datastax/driver/mapping/annotations/FrozenValue.html create table user{ name text, addresses map<text, frozen<list<frozen>>>, } 我的Java类 public class User{ private String name; @FrozenValue private Map<String, List> addresses; } 但我得到了以下错误 java.lang.IllegalArgumentException: Error while checking frozen types on field addresses of entity com.dante.data.model.User: expected AddressUDT to be frozen but was not frozen at com.datastax.driver.mapping.AnnotationChecks.validateAnnotations(AnnotationChecks.java:73) ~[cassandra-driver-mapping-2.1.7.jar:na] at com.datastax.driver.mapping.AnnotationParser.parseEntity(AnnotationParser.java:81) ~[cassandra-driver-mapping-2.1.7.jar:na] at […]

Cassandra NoHostAvailableException Java-CQLDriver

我正在使用Cassandra的CQL驱动程序在java中构建应用程序。 当我使用本地cassandra服务器时,我能够正常运行它。 但是,当我尝试运行时,相同的代码不适用于远程cassandra服务器。 初始化期间出现以下错误: – 以下是我用于CQL驱动程序的maven依赖: – com.datastax.cassandra cassandra-driver-core 2.1.3 com.datastax.cassandra cassandra-driver-mapping 2.1.2 以下是错误: – com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: yyyy.yyy.yyy.yyy.yyy-yyy.net/yy.yy.yy.yy:9160 (com.datastax.driver.core.ConnectionException: [yyyy.yyy.yyy.yyy.yyy-yyy.net/yy.yy.yy.yy:9160] Unexpected error during transport initialization (com.datastax.driver.core.ConnectionException: [yyyy.yyy.yyy.yyy.yyy-yyy.net/yy.yy.yy.yy:9160] Operation timed out)), Unexpected error during transport initialization (com.datastax.driver.core.ConnectionException: [xxxx.xxx.xxx.xxx.xxx-xxx.net/xx.xx.xx.xx:9160] Operation timed out))) at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:220) at com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:78) at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1231) at com.datastax.driver.core.Cluster.init(Cluster.java:158) at […]

Cassandra批量查询与单插入性能

我使用Cassandra java driver 。 我每秒收到150k请求,我将其插入到具有不同分区键的8个表中。 我的问题是哪种方式更好: 批量插入这些表 一个接一个地插入 。 我问这个问题是因为,考虑到我的请求大小(150k),批处理听起来像是更好的选项,但因为所有表都有不同的分区键,批处理看起来很昂贵。

使用Datastax Cassandra本机Java客户端管理不同一致性级别的最佳实践

使用CQL3,Cassandra一致性级别现在设置在会话级别。 本机Java客户端的Datastax文档说明: 会话实例是线程安全的,通常每个应用程序只需要一个实例 但我很难看到单个Session实例如何处理多个一致性级别(例如,使用QUORUM进行写入并使用ONE进行读取)。 我看到了各处潜在的竞争条件。 一个显而易见的解决方案是为读取和写入创建单独的会话,每个会话都具有适当的一致性级别集。 但这并没有完全解决问题。 如果一个类修改了两个会话之一的一致性级别怎么办? 然后,Session实例的所有后续用户将在不知不觉中使用新CL。 因此,据我所知,最安全的选择是每次需要访问Cassandra时创建一个新的Session实例,并在创建时明确设置CL。 我不清楚的是这种方法是否会带来性能损失。 例如, session = cluster.connect()或session.execute(“CONSISTENCY [cl]”)涉及到服务器的旅行? 我在这里错过了什么吗? 有没有人有相关经验可以分享? 谢谢。 更新:我看到com.datastax.driver.core.Query有一个设置一致性级别的方法。 因此,最简单的选择可能是坚持使用单个Session实例并为每个查询设置CL。

Apache-Cassandra 0.8.2中的UnavailableException()

我是Apache-Cassandra 0.8.2的新手。 我试图插入一些数据,但得到这个例外。 线程“main”中的exceptionUnavailableException() 在org.apache.cassandra.thrift.Cassandra $ insert_result.read(Cassandra.java:14902) 在org.apache.cassandra.thrift.Cassandra $ Client.recv_insert(Cassandra.java:858) 在org.apache.cassandra.thrift.Cassandra $ Client.insert(Cassandra.java:830) 在TestCassandra.main(TestCassandra.java:166) 我的代码是: 公共类TestCassandra {public static void createKeySpace(Cassandra.Client client,String ksname)抛出TException,InvalidRequestException,UnavailableException,UnsupportedEncodingException,NotFoundException,TimedOutException,SchemaDisagreementException {KsDef ksdef = new KsDef(); ksdef.name = ksname; ksdef.strategy_class =“NetworkTopologyStrategy”; List l = new ArrayList(); ksdef.cf_defs = l; client.system_add_keyspace(ksdef); System.out.println(“KeySpace Created”); public static void createColumnFamily(Cassandra.Client client,String ksname,String cfname)抛出TException,InvalidRequestException,UnavailableException,UnsupportedEncodingException,NotFoundException,TimedOutException,SchemaDisagreementException {CfDef cfd = new CfDef(ksname,cfname); […]

如何使用datastax java驱动程序有效地使用批量写入cassandra?

我需要使用Datastax Java驱动程序以批量写入Cassandra,这是我第一次尝试使用批处理与datastax Java驱动程序,所以我有一些困惑 – 下面是我的代码,我在其中尝试创建一个Statement对象并将其添加到Batch并将ConsistencyLevel设置为QUORUM。 Session session = null; Cluster cluster = null; // we build cluster and session object here and we use DowngradingConsistencyRetryPolicy as well // cluster = builder.withSocketOptions(socketOpts).withRetryPolicy(DowngradingConsistencyRetryPolicy.INSTANCE) public void insertMetadata(List listAddress) { // what is the purpose of unloggedBatch here? Batch batch = QueryBuilder.unloggedBatch(); try { for (AddressMetadata data : listAddress) […]