小编su-*_*su-的帖子

从com.example.cassandra使用Java Cassandra 1.0的Java驱动程序连接到Cassandra时出错

在使用DataStax的Cannsandra的Java驱动程序连接到Cassandra客户端时,它会抛出以下错误.

线程"main"中的异常com.datastax.driver.core.exceptions.NoHostAvailableException:尝试查询的所有主机都失败(尝试:[/ 127.0.0.1])

请建议......

谢谢!

我的java代码是这样的:

package com.example.cassandra;

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

public class SimpleClient {

private Cluster cluster;

public void connect(String node){

    cluster = Cluster.builder().addContactPoint(node).build();
    Metadata metadata = cluster.getMetadata();
    System.out.println(metadata.getClusterName());
}   


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

public static void main(String args[]) {

SimpleClient client = new SimpleClient();
client.connect("127.0.0.1");
client.close();
}
Run Code Online (Sandbox Code Playgroud)

cassandra datastax-java-driver

26
推荐指数
3
解决办法
5万
查看次数

新的Cassandra项目 - Astyanax还是Java Driver?

我正在与Cassandra开始一个新项目(并计划使用最新的稳定版(1.2.x)).我尝试了几种不同的Java库,比如Hector,Astyanax,Cassandra-jdbc ......

其中,(简而言之)我的选择是Astyanax.但后来我也发现并尝试了DataStax的Java驱动程序,它支持新的CQL二进制协议,如果你只使用CQL则更加清晰.似乎版本1.0.0 GA即将发布.

你会推荐哪一个?谢谢.

java cassandra astyanax datastax-java-driver

16
推荐指数
3
解决办法
8327
查看次数

在Datastax Cassandra CQL驱动程序的IN子句中使用集合准备语句

我正在尝试运行以下查询

SELECT edge_id, b_id FROM booking_by_edge WHERE edge_id IN ?
Run Code Online (Sandbox Code Playgroud)

我绑定了Long的Java列表作为参数,我得到一个例外

SyntaxError: line 0:-1 mismatched input '<EOF>' expecting ')' (ResultSetFuture.java:242)
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用(?)它需要绑定单个Long项,但我需要一个集合

我的语法有错误吗?

cql cassandra datastax-enterprise cql3 datastax-java-driver

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

使用DataStax客户端将参数传递给Cassandra CQL查询

我使用datastax作为连接cassandra的客户端.我已经通过Java成功连接到cassandra集群/密钥空间/列系列.我正在尝试,对cassandra专栏家族thriugh java发出一些疑问.对我来说,它适用于简单的查询

ResultSet results = session.execute("select * from demodb.customer where id = 1");
Run Code Online (Sandbox Code Playgroud)

现在我想从用户获取id参数并将其传递给session.execute(); 声明.我该怎么办呢?

java cql cassandra datastax-java-driver

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

Datastax - PreparedStatement线程安全吗?

com.datastax.driver.core.PreparedStatement实例应该是应用程序中的单例吗?

如果是这样,如果连接丢失会发生什么?PreparedStatement是否无效并且必须采取手动操作来"重新制定"?

PreparedStatement用法的一个简单例子(除了准备+在同一方法中执行)将是辉煌的!

prepared-statement cassandra datastax-enterprise datastax-java-driver

7
推荐指数
1
解决办法
2283
查看次数

Datastax Java Driver是否容易受到注入攻击?

如果使用纯文本CQL,DataStax Java Driver是否容易受到CQL注入攻击?会使用QueryBuilder帮助吗?

java cql code-injection cassandra datastax-java-driver

7
推荐指数
1
解决办法
5377
查看次数

解决org.glassfish.deployment.common.DeploymentException:CDI部署失败 - Cassandra Datastax Java Driver,Maven,Glassfish 4

我只是将这个作为解决方案发布给那些在Glassfish 4上通过Maven部署使用Datastax的Java驱动程序时遇到错误的人.

正如在Datastax的网站上写的那样,驱动程序的依赖性是:

<dependency>
    <groupId>com.datastax.cassandra</groupId>
    <artifactId>cassandra-driver-core</artifactId>
    <version>1.0.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

不幸的是,如果你通过Maven将它部署到Glassfish 4,它会抛出org.glassfish.deployment.common.DeploymentException:CDI部署失败......就像下面这样:

org.glassfish.deployment.common.DeploymentException: CDI deployment failure:WELD-001408 Unsatisfied dependencies for type [Set<Service>] with qualifiers [@Default] at injection point [[BackedAnnotatedParameter] Parameter 1 of [BackedAnnotatedConstructor] @Inject com.google.common.util.concurrent.ServiceManager(Set<Service>)]
at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:225)
at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:131)
at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:328)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:493)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:527)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:523)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:356)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:522)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:546)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1423)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1500(CommandRunnerImpl.java:108)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1762)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1674)
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534)
at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224)
at org.glassfish.grizzly.http.server.StaticHttpHandler.service(StaticHttpHandler.java:297)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:246)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
at …
Run Code Online (Sandbox Code Playgroud)

cassandra maven datastax-enterprise glassfish-4 datastax-java-driver

7
推荐指数
0
解决办法
6407
查看次数

Datastax PreparedStatements的工作原理

当我们创建PreparedStatement对象时,它是否缓存在服务器端?与Oracle驱动程序中的PreparedStatement相比有何不同?如果重用了准备好的语句,那么将什么数据发送到Cassandra服务器,只有param值?

据我所知,java驱动程序中的一个Session对象拥有多个与集群中多个节点的连接.如果我们在多个线程中的应用程序中重用相同的预处理语句,是否会使我们只使用一个连接到一个Cassandra?我猜准备语句仅在一个连接上完成...当每个执行调用更新路由键时会发生什么?

使用准备好的陈述有什么好处?

谢谢

prepared-statement cassandra datastax-java-driver

6
推荐指数
1
解决办法
878
查看次数

告诉Datastax Java Cassandra驱动程序超时集群连接

在尝试连接到群集时,如何告诉Datastax Java Cassandra驱动程序超时?

我对主机可以访问的情况特别感兴趣,但是Cassandra端口被阻塞或者Cassandra守护进程没有运行.我正在编写一个命令行客户端,如果它无法在合理的时间内连接,它应该退出并报告合适的错误消息.目前,如果联系点可以到达,驱动程序似乎将永远等待接触点响应.

也就是说,如果驱动程序无法在给定的最大时间内与任何接触点的Cassandra守护程序通信,我想Cluster.build()抛出一个NoHostAvailableException.

  • 创建我自己的RetryPolicy不起作用:那是为了重试查询,我希望我们准备好运行查询之前应用超时.
  • 创建我自己ReconnectinoPolicy最初看起来很有希望,但是接口的合同没有提供任何指示"认为这个节点永远死了"的方法

java cassandra datastax-java-driver

5
推荐指数
1
解决办法
3277
查看次数

使用Astyanax CQL3 API批量插入?

我知道我们可以用这样的东西向Cassandra插入单个记录(下面的例子取自这里):

final String INSERT_STATEMENT = "INSERT INTO employees (empID, deptID, first_name, last_name) VALUES (?, ?, ?, ?);";

result = keyspace
    .prepareQuery(CQL3_CF)
    .withCql(INSERT_STATEMENT)
    .asPreparedStatement()
    .withIntegerValue(222)
    .withIntegerValue(333)
    .withStringValue("Eric")
    .withStringValue("Cartman")
    .execute();
Run Code Online (Sandbox Code Playgroud)

是否可以使用Astyanax的cql3 API(如JDBC的executeBatch)进行批量插入(用于多个记录)?

注意:使用Astyanax的MutationBatch(基于Thrift,而不是CQL)对我来说似乎不是一个选择,因为我遇到了与问题相同的问题.

java cassandra astyanax

3
推荐指数
1
解决办法
2504
查看次数