标签: datastax-java-driver

如何提高cassandra的写入性能?

我有一个名为Emails的专栏系列,我将邮件保存到此CF中,写入5000封邮件需要100 +秒.

我正在使用i3处理器,8gb内存.我的数据中心有6个节点,复制因子= 2.

我们存储在Cassandra中的数据大小是否会影响性能?影响写入性能的所有因素是什么?如何提高性能?

提前致谢..

cassandra datastax-java-driver

2
推荐指数
1
解决办法
6477
查看次数

Datastax驱动程序限制选项

我使用datastax java驱动程序构造一个select查询.我使用限制选项设置限制.但我看到另一个属性也可以设置

setFetchSize(int size)

DEFAULT_FETCH_SIZE- 5000根据文档.

http://www.datastax.com/drivers/java/2.0/com/datastax/driver/core/QueryOptions.html#DEFAULT_FETCH_SIZE

这是否意味着如果我连续有大约10000列,如果我有一个限制为3的查询运行,它将始终获取指定的默认值 - 5000行,然后限制最后3行?

我认为限制查询默认情况下在默认情况下单独获取最后3个值.有人可以澄清一下吗?

cassandra cassandra-cli datastax-java-driver

2
推荐指数
1
解决办法
5130
查看次数

如何使用blob数据类型在cassandra中存储对象

我尝试了数据类型blob.这给了一些Datastax例外.我尝试了对象本身,bytearray.仍然没有好处:

 Caused by: com.datastax.driver.core.exceptions.InvalidQueryException: Invalid STRING constant ([B@547248ad) for user_object of type blob
Run Code Online (Sandbox Code Playgroud)

这是失败的INSERT:

executeSting.append("INSERT INTO htadb.objecttable (object_id, bucket_name, object_key, link, user_status, user_object) ")
            .append("VALUES (")
            .append(objectId).append(",'")
            .append(bucketName).append("','")
            .append(key).append("','")
            .append(link).append("','")
            .append("online").append("','")
            .append(serializer(register)).append("')"
                    + ";");
Run Code Online (Sandbox Code Playgroud)

cassandra datastax-java-driver

2
推荐指数
1
解决办法
6006
查看次数

主线程java.lang.NoClassDefFoundError中的异常

在线程"main"java.lang.NoClassDefFoundError:com/google/common/util/concurrent/FutureCallback中获取错误异常,同时在代码下运行.请告知我缺少哪个Jar文件.我正在从Eclipse IDE执行

package Datastax;

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Host;
import com.datastax.driver.core.Metadata;
import com.datastax.driver.core.Session;


public class DataStaxPOC {
   private Cluster cluster;

   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());
      }
   }

   public void close() {
      cluster.shutdown();
   }

   public static void main(String[] args) {
      DataStaxPOC client = new DataStaxPOC();
      client.connect("127.0.0.1");
      client.close();
   }
}
Run Code Online (Sandbox Code Playgroud)

java eclipse cassandra datastax-java-driver datastax

2
推荐指数
1
解决办法
6536
查看次数

Datastax Driver Mapping API

有没有人知道Datastax是否已经或正计划发布批处理语句的映射/注释支持?我喜欢新的映射和注释抽象,但没有看到任何批处理语句.

datastax-java-driver

2
推荐指数
1
解决办法
1738
查看次数

范围查询在卡桑德拉

我正在使用Cassandra 2.1.2和相应的DataStax Java驱动程序以及DataStax提供的Object映射.

下表定义:

CREATE TABLE IF NOT EXISTS ses.tim (id text PRIMARY KEY, start bigint, cid int);
Run Code Online (Sandbox Code Playgroud)

映射:

@Table(keyspace = "ses", name = "tim")
class MyObj {
    @PartitionKey
    private String id;
    private Long start;
    private int cid;
}
Run Code Online (Sandbox Code Playgroud)

访问者

@Accessor
interface MyAccessor {
    @Query("SELECT * FROM ses.tim WHERE id = :iid")
    MyObj get(@Param("iid") String id);

    @Query(SELECT * FROM ses.tim WHERE start <= :sstart")
    Result<MyObj> get(@Param("sstart") long start);
}
Run Code Online (Sandbox Code Playgroud)

如访问者中所示,我想做一个返回"start"小于或等于特定值的所有内容的查询.

有了这个表的定义,根本不可能.因此我尝试创建二级索引:

CREATE INDEX IF NOT EXISTS myindex ON ses.tim (start); …
Run Code Online (Sandbox Code Playgroud)

java cassandra datastax-java-driver

2
推荐指数
1
解决办法
1007
查看次数

Cassandra中的TokenAware策略

当在Cassandra中使用令牌感知策略作为负载平衡策略时,所有查询都会自动通过正确的节点发送(其中包含副本,例如select*from Table,其中partionkey = something,将自动获取散列并转到正确的副本)或我必须在我的所有查询中使用token()函数?

cql cassandra datastax-java-driver

2
推荐指数
1
解决办法
2193
查看次数

DSE Graph with Java Driver,如何添加边缘

我想用Datastax Java Driver完全构建一个图形.我设法插入顶点,但我不知道如何将边添加到现有顶点.

当我运行以下代码时

session.executeGraph("parent = g.V().has('businessId','sys-1').next()");
session.executeGraph("child = g.V().has('businessId','sys-2').next()");
session.executeGraph("parent.addEdge('consistsOf', child)");
Run Code Online (Sandbox Code Playgroud)

我得到一个例外

Exception in thread "main" com.datastax.driver.core.exceptions.InvalidQueryException: No such property: parent for class: Script285
    at com.datastax.driver.core.exceptions.InvalidQueryException.copy(InvalidQueryException.java:50)
    at com.datastax.driver.dse.DriverThrowables.propagateCause(DriverThrowables.java:29)
    at com.datastax.driver.dse.DefaultDseSession.executeGraph(DefaultDseSession.java:77)
    at com.datastax.driver.dse.DefaultDseSession.executeGraph(DefaultDseSession.java:64)
    at de.pratho.valpro.tools.Main.main(Main.java:41)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Caused by: com.datastax.driver.core.exceptions.InvalidQueryException: No such property: parent for class: Script285
    at com.datastax.driver.core.Responses$Error.asException(Responses.java:136)
    at com.datastax.driver.core.DefaultResultSetFuture.onSet(DefaultResultSetFuture.java:179)
    at com.datastax.driver.core.RequestHandler.setFinalResult(RequestHandler.java:173)
    at com.datastax.driver.core.RequestHandler.access$2500(RequestHandler.java:43)
    at com.datastax.driver.core.RequestHandler$SpeculativeExecution.setFinalResult(RequestHandler.java:788)
    at com.datastax.driver.core.RequestHandler$SpeculativeExecution.onSet(RequestHandler.java:607)
    at com.datastax.driver.core.Connection$Dispatcher.channelRead0(Connection.java:1012)
    at com.datastax.driver.core.Connection$Dispatcher.channelRead0(Connection.java:935)
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:318)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:304)
    at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:266) …
Run Code Online (Sandbox Code Playgroud)

java gremlin datastax-enterprise datastax-java-driver datastax-enterprise-graph

2
推荐指数
1
解决办法
962
查看次数

找不到类com/google/common/util/concurrent/FutureFallback

当我尝试使用DataStax Java Driver从Java连接到Cassandra时,我收到此错误.关于SO我几乎没有回答.在这里它说com.google.common.util.concurrent.FutureFallback is deprecated在番石榴19.0,自20.0番石榴取出.因此,不要使用Guava 20.0或更高版本.

此外,我正在使用需要Guava 20.0的Pmml-Evaluator.如果我删除连接到Cassandra的代码,我的代码工作正常.那么,我现在如何解决这个问题呢?

Pom.xml依赖项:

<dependencies>

    <dependency>
      <groupId>org.jpmml</groupId>
      <artifactId>pmml-model</artifactId>
      <version>1.3.4</version>
   </dependency>

     <dependency>
        <groupId>com.beust</groupId>
        <artifactId>jcommander</artifactId>
        <version>1.48</version>
      </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>

     <dependency>
        <groupId>org.jpmml</groupId>
        <artifactId>pmml-evaluator</artifactId>
        <version>1.3.4</version>
      </dependency>

   <dependency>
      <groupId>io.grpc</groupId>
      <artifactId>grpc-netty</artifactId>
      <version>1.1.2</version>
    </dependency>

  <dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-protobuf</artifactId>
    <version>1.1.2</version>
  </dependency>

  <dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-stub</artifactId>
    <version>1.1.2</version>
  </dependency>

  <dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-handler</artifactId>
    <version>4.1.8.Final</version>
</dependency>

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

  </dependencies> 
Run Code Online (Sandbox Code Playgroud)

课程:

package com.cw.predictive;

import com.datastax.driver.core.Session;
import com.datastax.driver.core.Cluster;

public class CassandraSession {

    private static Session session; …
Run Code Online (Sandbox Code Playgroud)

java guava datastax-enterprise datastax-java-driver datastax

2
推荐指数
1
解决办法
6693
查看次数

Cassandra查询性能:对复合分区键的一部分使用IN子句

我目前在Cassandra中设置了一个表,该表具有text,decimal或date类型的列,并带有business_date和account_number 的复合分区键。对于该表的查询,我需要能够支持给定日期的单个帐户或帐户列表的查询。

例:

select x,y,z from my_table where business_date = '2019-04-10' and account_number IN ('AAA', 'BBB', 'CCC')
//Note: Both partition keys are provided for this query
Run Code Online (Sandbox Code Playgroud)

我一直在努力解决与访问此数据有关的性能问题,因为我注意到等待模式很难理解/解释。

在许多情况下,客户端应用程序可以在短时间内总共运行相同的精确查询三次。对于这些情况,我发现三分之二的请求的响应时间(800毫秒)确实很差,其中一个请求的响应时间非常快(50毫秒)。起初我以为这是由于键或行缓存引起的,但是我不确定,因为我相信如果这是真的,那么三个请求中的第三个请求应该总是最快的,事实并非如此。 。

我认为我面临的第二个问题是实际的数据模型本身。尽管查询是在提供所有分区键的情况下提交的,但由于它是一个IN子句,因此结果将是单独的分区,并且可以分布在整个群集中,因此,这将是错误的访问模式。但是,即使运行单个帐户查询,我也会看到这些延迟问题。另外,我看到15到20个帐户附带的查询的性能非常好(在50毫秒以下),因此我不确定数据模型是否确实存在问题。

集群设置:

  • 数据中心:2
  • 每个数据中心的节点数:3
  • 键空间复制:local_dc = 2,remote_dc = 2

Java驱动程序集:

  • 负载平衡:DCAware与LatencyAware
  • 通讯协定:v3
  • 仍然将查询设置为使用“ IN”子句,而不是异步单个查询
  • 读取一致性:LOCAL_ONE

在真正确定此问题的根本原因方面,有人对我应关注的事情有任何想法/线索吗?

query-optimization cassandra datastax-java-driver

2
推荐指数
1
解决办法
94
查看次数