Tag: cassandra

考虑将序列化的java对象存储为cassandra作为JSON。 捕获量是多少?

我正在使用Cassandra 1.2.2。 我发现使用Jackson可以很容易地将我的对象映射到json和java之间以便存储在数据库中。 我实际上很想对我的所有数据这样做。 我的问题是,这是个好主意吗? 对我的应用程序执行此操作有什么缺点。 我的第一个猜测可能是更多的处理开销,但果汁值得挤压? 还有其他我需要知道的缺点吗?

无法让Cassandra在Basic Applcation中工作

这是我当前的错误: com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /127.0.0.1 (com.datastax.driver.core.TransportException: [/127.0.0.1] Unexpected exception triggered (java.lang.NoClassDefFoundError: Could not initialize class com.datastax.driver.core.Codec))) com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:186) com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:81) com.datastax.driver.core.Cluster$Manager.init(Cluster.java:773) com.datastax.driver.core.Cluster$Manager.access$100(Cluster.java:706) com.datastax.driver.core.Cluster.(Cluster.java:79) com.datastax.driver.core.Cluster.(Cluster.java:66) com.datastax.driver.core.Cluster$Builder.build(Cluster.java:687) com.t2.claims.persistence.CassandraClient.getOrCreateCluster(CassandraClient.java:12) com.t2.claims.persistence.CassandraClient.getOrCreateSession(CassandraClient.java:18) com.t2.claims.dao.AlertDaoImpl.findAll(AlertDaoImpl.java:25) com.t2.claims.controllers.AlertIndexController.doAfterCompose(AlertIndexController.java:36) org.zkoss.zk.ui.impl.UiEngineImpl.doAfterCompose(UiEngineImpl.java:529) …. 我觉得我正在导入我需要的所有可用的人工制品(以及许多我不想试图解决这个问题)。 我只是不明白为什么这不起作用? 这是我的pom.xml的完整性: 4.0.0 com.t2.claims T2ClaimsPortal war 1.0-SNAPSHOT T2ClaimsPortal 3.2.0.RELEASE 6.0.2.1 2.4 1.2.1 1.3.1 1.1.1 spring-milestone Spring Maven MILESTONE Repository http://maven.springframework.org/milestone […]

为什么我的Cassandra准备声明数据采集速度如此之慢?

我有一个包含10万个名字的Java列表,我想将它们摄取到运行带有Cassandra 3.10.0的Datastax Enterprise 5.1的3节点Cassandra集群中 我的代码摄取但需要花费很长时间。 我对集群进行了压力测试,每秒可以进行超过25,000次写入。 使用我的摄取代码,我获得了大约200 /秒的可怕性能。 我的Java列表中有100,000个名称,称为myList。 我使用以下预准备语句和会话执行来提取数据。 PreparedStatement prepared = session.prepare(“insert into names (id, name) values (?, ?)”); int id = 0; for(int i = 0; i < myList.size(); i++) { id += 1; session.execute(prepared.bind(id, myList.get(i))); } 我在代码中添加了一个集群监视器,以查看发生了什么。 这是我的监控代码。 /// Monitoring Status of Cluster final LoadBalancingPolicy loadBalancingPolicy = cluster.getConfiguration().getPolicies().getLoadBalancingPolicy(); ScheduledExecutorService scheduled = […]

如何在Cassandra中执行批处理语句和LWT作为事务

我有两张下面的模型表: CREATE TABLE IF NOT EXISTS INV ( CODE TEXT, PRODUCT_CODE TEXT, LOCATION_NUMBER TEXT, QUANTITY DECIMAL, CHECK_INDICATOR BOOLEAN, VERSION BIGINT, PRIMARY KEY ((LOCATION_NUMBER, PRODUCT_CODE))); CREATE TABLE IF NOT EXISTS LOOK_INV ( LOCATION_NUMBER TEXT, CHECK_INDICATOR BOOLEAN, PRODUCT_CODE TEXT, CHECK_INDICATOR_DDTM TIMESTAMP, PRIMARY KEY ((LOCATION_NUMBER), CHECK_INDICATOR, PRODUCT_CODE)) WITH CLUSTERING ORDER BY (CHECK_INDICATOR ASC, PRODUCT_CODE ASC); 我有一个业务操作,我需要更新表中的CHECK_INDICATOR和INV表中的QUANTITY。 由于CHECK_INDICATOR是LOOK_INV表中键的一部分,我需要先删除该行并插入一个新行。 以下是我需要以批处理方式执行的三个操作(要么所有操作都要成功执行,要么不执行任何操作) […]

Datastax cassandra驱动程序提供有关主机状态的错误元数据信息

我有一个带有2个DC的集群,每个DC包含2个节点。 DC1: 192.168.60.81 192.168.60.82 DC2: 192.168.60.242 192.168.60.247 应用程序连接到192.168.60.81,因此应用程序的本地DC是DC1。 情况1: 最初当所有节点都启动时,当我尝试获取cluster.metadata.allHosts ,它会向我提供有关主机状态为UP的信息。 情况2: 当本地数据中心(DC1)中的任何节点上升或下降时, cluster.metadata.allHosts会为我提供正确的主机状态信息。 问题: 当远程数据中心(DC2)中的任何节点发生故障时, cluster.metadata.allHosts主机状态信息正确地显示为DOWN。 但是当同一节点重新启动时,仍然是cluster.metadata.allHosts将主机状态信息作为DOWN提供给我。 我在Host.StateListener中注册,以查看是否为远程DC中的节点触发了事件。 但不幸的是,当远程DC中的节点重新启动时,它也永远不会通知。 任何帮助,将不胜感激。 所有节点中的Cassandra版本:2.1.4 Datastax java驱动程序版本:2.1.9

Apache Ignite – java.lang.ClassNotFoundException:未知对

这是我最后一次尝试将Apache Ignite 2.0配置为使用Cassandra作为持久层和ODBC作为查询层。 ODBC配置没问题,我可以使用sql在缓存中放入和获取数据,但是当我将Cassandra(版本3.9通过docker image)作为持久层插入时,我得到了: java.lang.ClassNotFoundException: Unknown pair [platformId=0, typeId=1262449073] 我尝试使用谷歌搜索此exception,但没有得到任何有用的提示。 这是我的Ignite配置 : boolean persistence = true; IgniteConfiguration cfg = new IgniteConfiguration(); CacheConfiguration configuration = new CacheConfiguration(); configuration.setName(“test-cache”); configuration.setIndexedTypes(String.class, ValueClass.class); if(persistence){ // Configuring Cassandra’s persistence DataSource dataSource = new DataSource(); dataSource.setContactPoints(“172.17.0.2”); RoundRobinPolicy robinPolicy = new RoundRobinPolicy(); dataSource.setLoadBalancingPolicy(robinPolicy); dataSource.setReadConsistency(“ONE”); dataSource.setWriteConsistency(“ONE”); String persistenceSettingsXml = FileUtils.readFileToString(new File(persistenceSettingsConfig), “utf-8”); […]

提高Cassandra和Java集合的性能

我们在项目中使用NoSQL(Cassandra)。 我们有一个表A(5000条记录),这是一个主表。 我们有另一张表B(2000条记录)。 表B有4列,表A有25列。 我们公开了一个REST服务来获取B的所有记录; 喜欢/ service / getB。 此服务将返回6列作为响应 – { “result”: [ { “col1FromB”: “1B”, “col2FromB”: “2B”, “col3FromB”: “3B”, “col4FromB”: “4B”, “col1FromA”: “1A”, “col2FromA”: “2A” }, { “col1FromB”: “11B”, “col2FromB”: “12B”, “col3FromB”: “13B”, “col4FromB”: “14B”, “col1FromA”: “11A”, “col2FromA”: “12A” } ] } 因此,对于表B中的每个项目,都会查询表A.这就是我这样做的方式 – //Get all from Table B (took 90 ms in […]

只有日期范围扫描Cassandra CQL时间戳

我有一张如下表所示的表格。 CREATE TEST( HOURLYTIME TIMESTAMP, FULLTIME TIMESTAMP, DATA TEXT, PRIMARY KEY(HOURLYTIME,FULLTIME) ) 我插入了记录(2014-12-12 00:00:00,2014-12-12 00:00:01,’Hello World’) 我想根据HOURLYTIME字段中的日期时间范围进行搜索,该字段包含每小时记录。当我尝试使用token()时 select * from TEST where token(HOURLYTIME)=token(‘2014-12-12’) 获取该日期的所有记录,它只返回一小时的记录,即 2014-12-12 **00:00:00** 如果我添加日期范围 select * from TEST where token(HOURLYTIME)>=token(‘2014-12-12’) AND token(HOURLYTIME)<=token('2014-12-14'); 它给出了错误: 找到了一个以上的起始限制限制 。 如何解决此问题。 我能够使用FULLTIME扫描,但我需要提供ALLOW FILTERING,它将扫描整个记录并且效率低下。

无法启动DSE搜索的solr方面

我无法启动DSE搜索的solr方面,当我执行时,我得到以下exception消息,当我执行bin / dse cassandra启动cassandra服务启动但不是solr,是否有人有任何指导提供给我我知道我错过了一些东西: bin / dse cassandra -s 信息: Cannot start node if snitch’s data center (Solr) differs from previous data center (Cassandra). Please fix the snitch configuration, decommission and rebootstrap this node or use the flag -Dcassandra.ignore_dc=true. at org.apache.cassandra.db.SystemKeyspace.checkHealth(SystemKeyspace.java:629) ~[cassandra-all-2.1.12.1046.jar:2.1.12.1046] at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:290) [cassandra-all-2.1.12.1046.jar:2.1.12.1046] at com.datastax.bdp.server.DseDaemon.setup(DseDaemon.java:329) [dse-4.7.7.jar:4.7.7] at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:564) [cassandra-all-2.1.12.1046.jar:2.1.12.1046] at com.datastax.bdp.DseModule.main(DseModule.java:75) [dse-4.7.7.jar:4.7.7]

使用CQL 3.0在集合上创建自定义索引

我一直在查看CQL 3.0 数据建模文档 ,该文档描述了带有标签的列系列歌曲,如下所示: CREATE TABLE songs ( id uuid PRIMARY KEY, title text, tags set ); 我想获得所有具有特定标签的歌曲的列表,因此我需要添加适当的索引。 我可以很容易地在title列上创建一个索引,但是如果我尝试索引一个集合的tags列,就像这样: CREATE INDEX ON songs ( tags ); 我从DataStax Java驱动程序1.0.4收到以下错误: Exception in thread “main” com.datastax.driver.core.exceptions.InvalidQueryException: Indexes on collections are no yet supported at com.datastax.driver.core.exceptions.InvalidQueryException.copy(InvalidQueryException.java:35) at com.datastax.driver.core.ResultSetFuture.extractCauseFromExecutionException(ResultSetFuture.java:269) 根据JIRA问题CASSANDRA-4511 ,看起来这可以在更高版本的Cassandra(2.1)中修复。 我目前正在使用Apache Cassandra 1.2.11,但不想升级。 根据问题CASSANDRA-5615 ,在Cassandra 1.2.6中,对集合的自定义索引有支持。 问题是,唯一可用的文档指出: Cassandra支持创建自定义索引,该索引供内部使用且超出本文档的范围。 但是,它确实建议以下语法: […]