标签: datastax-java-driver

Java:如何创建Class <T>参数?

我正在尝试为Cassandra DB 使用Datastax Java驱动程序API,并且我有一个具有getList函数的行对象:

public <T> List<T> getList(String name,
                          Class<T> elementsClass)

   Returns the value of column name as a list.
Parameters:
   name - the name of the column to retrieve.
   elementsClass - the class for the elements of the list to retrieve.
Returns:
   the value of the ith column in this row as a list of elementsClass objects. If the value is NULL, an empty list is returned (note that Cassandra makes no difference between an empty list …
Run Code Online (Sandbox Code Playgroud)

java cassandra cql3 datastax-java-driver

4
推荐指数
1
解决办法
2300
查看次数

如何关闭Database Connection Datastax Java Driver

我正在使用Datastax Java Driver.有一个使用相同的教程.

我不明白的是如何关闭与cassandra的连接?没有可用的密切方法,我认为我们不希望关闭会话,因为它预期是每个应用程序一个.

关心高拉夫

java cassandra datastax-java-driver datastax

4
推荐指数
2
解决办法
9279
查看次数

使用DataStax Java驱动程序1.0.4使用CQL连接到Cassandra时出现异常

我在我的笔记本电脑上运行了Cassandra 1.2.11.我可以使用nodetool和连接它,cqlsh但当我尝试使用DataStax 1.0.4 Java API使用CQL 3.0进行连接时,我收到以下错误:

com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: localhost/127.0.0.1 ([localhost/127.0.0.1] Unexpected error during transport initialization (com.datastax.driver.core.TransportException: [localhost/127.0.0.1] Channel has been closed)))
    at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:186)
Run Code Online (Sandbox Code Playgroud)

我使用以下代码进行连接,取自DataStax文档.我已经尝试了几个端口号,包括离开withPort()呼叫,但似乎没有任何工作.

Cluster cluster = new Cluster.Builder()
        .addContactPoints("localhost")
        .withPort(9160)
        .build();
Run Code Online (Sandbox Code Playgroud)

使用telnet我可以验证Cassandra服务器肯定在我指定的每个端口上监听.我还验证了所有必需的库jar文件都在我的类路径中,如文档中所述.

java cassandra cql3 datastax-java-driver

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

低基数列cassandra的二级索引

我们有一个包含1500万条记录的表,我们的是一个10节点的cassandra集群.我们有一个列有近20个可重复的值.是否可以在此列上构建二级索引?

cql cassandra cql3 datastax-java-driver datastax

4
推荐指数
1
解决办法
631
查看次数

尝试查询失败的所有主机 - com.datastax.driver.core.OperationTimedOutException

在使用spark工作执行Cassandra操作(两个表上的批处理执行 - 插入和更新操作)时,我得到了"所有主机都尝试查询失败 - com.datastax.driver.core.OperationTimedOutException "错误.

集群信息:
Cassandra 2.1.8.621 | DSE 4.7.1
spark-cassandra-connector-java_2.10 version - 1.2.0-rc1 | cassandra-driver-core版本 - 2.1.7
Spark 1.2.1 | Hadoop 2.7.1 => 3个节点
Cassandra 2.1.8 => 5个节点
每个节点有28 gb内存和24个内核

在寻找它的解决方案时,我遇到了一些讨论,其中说你不应该使用BATCHES.虽然我想找到这个错误的根本原因.另外,如何以及从哪里设置/获取"SocketOptions.setReadTimeout",因为此超时限制必须大于Cassandra请求超时(根据标准准则)并避免可能的错误.

是request_timeout_in_ms和SocketOptions.setReadTimeout一样吗?任何人都可以帮我这个吗?

cassandra socket-timeout-exception datastax-enterprise datastax-java-driver

4
推荐指数
1
解决办法
4983
查看次数

关闭ResultSet和Statement资源(datastax,no close()方法)

你好,世界 !

我在尝试关闭一些数据共享资源(Statement,ResultSet)时遇到了麻烦.使用后,Sonar正在大声喊叫我关闭这些资源.

(关于我使用myMethod()之后的信息,我调用了一个System.exit(0))Bu无论如何,我想根据声纳来做

session.close()是不够的,因为它似乎让Statement和ResultSet.

/!\ ResultSet和Statement来自com.datastax.com.driver,并且这些close()方法不存在.(与java.sql不同)

我认为session.getCluster.close()会这样做,但我不想关闭群集.

什么是正确关闭这些资源的正确方法?

import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.Statement;
public void myMethod() {

    Statement statement = session.prepare("select * from .....").bind();
    ResultSet rs = session.execute(statement);

    // doSomethingWithThisResultSet() ...

    session.close();
}
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助 !

java datastax-java-driver datastax sonarqube

4
推荐指数
1
解决办法
1596
查看次数

Datastax Cassandra - 使用对象映射器时的继承

我尝试使用Cassandra来持久化非常简单的POJO,但是使用类层次结构(许多子类,一个超类).我正在使用Java和Datastax驱动程序(以及对象映射器).

我的问题是Object Mapper似乎不能识别超类中注释的字段.

我实施的结构是:

@Table(keyspace = "...", name = "...")
public class Subclass extends Superclass {  
    public double x;
    public double y;
    public double z;

   ....
}

public class Superclass {   
    @PartitionKey(0)
    @Column(name = "user_id")
    public long userId;

    @PartitionKey(1)
    @Column(name = "device_id")
    public long deviceId;
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试保存子类对象:

public static void main(String[] args) {
    Subclass data = new Subclass();
    data.deviceId = 123;
    data.userId = 1212;
    data.x = 0;
    data.y = 1;
    data.z = 2;

    Cluster cluster;
    Session session;

    ...

    Mapper<Subclass> mapper …
Run Code Online (Sandbox Code Playgroud)

java inheritance cassandra datastax-java-driver datastax

4
推荐指数
1
解决办法
1942
查看次数

将Cassandra BoundStatement的ResultSet映射/转换/转换为使用Object-mapping API构建的Java classe的最有效方法是什么?

DataStax Java中是否存在用于Apache Cassandra的内置方法,以将来自BoundStatement的ResultSet映射到使用Object-mapping API构建的域对象Java类?

我是一个从Mapper + Accessor方法转向BoundStatement方法的新手,并希望继续使用使用Object-mapping API构建的域对象的Java类,因此我在转移到BoundStatement时对DAO方法的实现进行了微小的更改. .我希望以通用方式执行此操作,并避免迭代每个ResultSet行并为每个域对象逐个执行row.get.

使用Mapper + Accessor方法时,Result.all()可以很好地完成.找不到类似于BoundStatement方法的任何内容.

谢谢

IPVP

java cassandra datastax-java-driver

4
推荐指数
1
解决办法
3476
查看次数

Cassandra复制因子大于节点数


我正在为Apache Cassandra使用datastax java驱动程序(v.2.1.9),我想知道当我将replication_factor设置为大于节点数时会发生什么.我已经读过Cassandra允许这个操作的地方,但是当我尝试保存一些数据时应该会失败(当然这取决于写入一致性级别,但我的意思是ALL的情况).
问题是一切正常,即使我尝试保存数据,也不会抛出任何异常.为什么?
对于较旧版本的Cassandra,也许我读过的那些信息都很旧了?还有一个问题,是否真的,而不是在我向集群添加另一个节点时会发生什么?

java cassandra datastax-java-driver cassandra-2.1

4
推荐指数
1
解决办法
2365
查看次数

Cassandra表中快速估计的行数

我很惊讶以前没有提出这个问题.

假设我们在cassandra中有一个巨大的表,我们需要在其中获得估计的行数(不精确,只是近似).

显然简单select count(*) from table并不高效,可能需要很长时间.我们需要一些又脏又快的东西.

Datastax博客建议如下:

我不关心确切的数字,我可以估算一下吗?

因为Cassandra知道每个SSTable中有多少行,所以可以得到估计值.'nodetool cfstats'输出告诉您'键数(估计)'行中的这些计数.这是每个SStable中行的总和(由于使用了索引而再次近似,但默认情况下不能超过128).

我的问题:我们可以使用DataStax Enterprise Java驱动程序执行相同的操作吗?

PS我不能改变表结构或其他什么.考虑我使用遗留架构.换句话说,我对添加计数器或其他特殊字段等变通方法不感兴趣.

java cassandra datastax-java-driver

4
推荐指数
1
解决办法
1270
查看次数