我有一个名为Emails的专栏系列,我将邮件保存到此CF中,写入5000封邮件需要100 +秒.
我正在使用i3处理器,8gb内存.我的数据中心有6个节点,复制因子= 2.
我们存储在Cassandra中的数据大小是否会影响性能?影响写入性能的所有因素是什么?如何提高性能?
提前致谢..
我使用datastax java驱动程序构造一个select查询.我使用限制选项设置限制.但我看到另一个属性也可以设置
setFetchSize(int size)
DEFAULT_FETCH_SIZE- 5000根据文档.
这是否意味着如果我连续有大约10000列,如果我有一个限制为3的查询运行,它将始终获取指定的默认值 - 5000行,然后限制最后3行?
我认为限制查询默认情况下在默认情况下单独获取最后3个值.有人可以澄清一下吗?
我尝试了数据类型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) 在线程"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) 有没有人知道Datastax是否已经或正计划发布批处理语句的映射/注释支持?我喜欢新的映射和注释抽象,但没有看到任何批处理语句.
我正在使用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) 当在Cassandra中使用令牌感知策略作为负载平衡策略时,所有查询都会自动通过正确的节点发送(其中包含副本,例如select*from Table,其中partionkey = something,将自动获取散列并转到正确的副本)或我必须在我的所有查询中使用token()函数?
我想用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
当我尝试使用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
我目前在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毫秒以下),因此我不确定数据模型是否确实存在问题。
集群设置:
Java驱动程序集:
在真正确定此问题的根本原因方面,有人对我应关注的事情有任何想法/线索吗?