标签: datastax-java-driver

如何在使用命令行时使用CQL获取当前时间戳?

我试图从命令行插入我的CQL表.我能插入一切.但我想知道我是否有时间戳列,那么如何从命令行插入timestamp列?基本上,我想在插入我的CQL表时插入当前时间戳 -

目前,每当我插入下面的CQL表时,我都会硬编码时间戳 -

CREATE TABLE TEST (ID TEXT, NAME TEXT, VALUE TEXT, LAST_MODIFIED_DATE TIMESTAMP, PRIMARY KEY (ID));

INSERT INTO TEST (ID, NAME, VALUE, LAST_MODIFIED_DATE) VALUES ('1', 'elephant',  'SOME_VALUE', 1382655211694);
Run Code Online (Sandbox Code Playgroud)

有没有办法在CQL中使用一些预定义函数来获取当前时间戳,以便在插入上表时,我可以使用该方法获取当前时间戳然后插入上表?

timestamp cql cassandra datastax-java-driver

53
推荐指数
2
解决办法
8万
查看次数

从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 - NoHostAvailableException

我知道有几个线程,NoHostAvailableException但他们根本不提供我的问题的解决方案.

我无法使用Datastax Java Cassandra Driver连接到Cassandra.我收到错误:

com.datastax.driver.core.exceptions.NoHostAvailableException:尝试查询的所有主机都失败了(试过:[/54.221.241.107])

我确信配置是正确的.我在cassandra.yaml中设置了配置:

start_native_transport: true 
# port for the CQL native transport to listen for clients on 
native_transport_port: 9042 
Run Code Online (Sandbox Code Playgroud)

我的Cassandra安装是AWS上EC2实例的标准安装.我已将AWS配置为允许端口9042.

Cassandra在Windows Server 2008 R2上运行,我还在9042上将防火墙配置为入站和出站连接.

我的代码如下所示:

cluster = Cluster.builder()
  .withPort(9042)
  .addContactPoint("54.221.241.107").build();
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么办,因为我总是得到这个错误.有什么建议?

cassandra datastax-java-driver

18
推荐指数
2
解决办法
3万
查看次数

CQL3:如果只有主键,如何检索TTL?

我有一个像这样定义的CQL表:

CREATE table primary_key_only(
  row_key varchar,
  clustered_key varchar,
  primary key(row_key, clustered_key)
)
Run Code Online (Sandbox Code Playgroud)

假设我插入这样的值:

INSERT INTO primary_key_only (row_key, clustered_key) VALUES ('FACE', 'D00D') USING TTL 86400;
Run Code Online (Sandbox Code Playgroud)

我如何检索插入数据的TTL?通常,如果有一个不属于主键的CQL列,那么我可以使用如下语句:

SELECT ttl(<column_name>) FROM table WHERE row_key='key';
Run Code Online (Sandbox Code Playgroud)

但由于只有主键列,像功能ttlwritetime将无法正常工作.除了在不属于主键的表中添加额外的"虚拟"列之外,我如何获得TTL?

ttl cassandra cql3 datastax-java-driver

17
推荐指数
2
解决办法
3551
查看次数

新的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驱动程序时重用PreparedStatement?

我目前正在使用Cassandra 2的Datastax Cassandra驱动程序来执行cql3.这工作正常.我开始使用PreparedStatement's:

Session session = sessionProvider.getSession();
try {
    PreparedStatement ps = session.prepare(cql);
    ResultSet rs = session.execute(ps.bind(objects));
    if (irsr != null) {
       irsr.read(rs);
    }
}
Run Code Online (Sandbox Code Playgroud)

有时我会在日志中收到驱动程序的警告:

Re-preparing already prepared query . Please note that preparing the same query more than once is generally an anti-pattern and will likely affect performance. Consider preparing the statement only once.
Run Code Online (Sandbox Code Playgroud)

这个警告是有道理的,但我不确定我应该如何重用PreparedStatement

我应该只是PreparedStatement在构造函数/ init方法中创建我的所有内容而不是简单地使用它们吗?

但是当多个线程同时使用相同的线程PreparedStatement时(特别是调用PreparedStatement.bind()绑定对象),这是否顺利

java cassandra datastax-java-driver

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

Cassandra Java Driver- QueryBuilder API与PreparedStatements

Cassandra的Datastax Java驱动程序(cassandra-driver-core 2.0.2)支持PreparedStatementsQueryBuilder API.使用一个优于另一个的任何特定优势?缺点是什么?

文档:http://www.datastax.com/documentation/developer/java-driver/2.0/common/drivers/reference/driverReference_r.html

除了以编程方式编写查询之外,上述doc没有说明使用QueryBuilder API而不是PreparedStatements,这没有多大优势(在我的书中).

请分享您的想法和经验.谢谢.

java prepared-statement cassandra datastax-java-driver cassandra-2.0

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

在使用"executeAsync"时如何限制写入请求到cassandra?

我使用datastax java驱动程序3.1.0连接到cassandra集群,我的cassandra集群版本是2.0.10.我与QUORUM一致性异步编写.

  private final ExecutorService executorService = Executors.newFixedThreadPool(10);

  public void save(String process, int clientid, long deviceid) {
    String sql = "insert into storage (process, clientid, deviceid) values (?, ?, ?)";
    try {
      BoundStatement bs = CacheStatement.getInstance().getStatement(sql);
      bs.setConsistencyLevel(ConsistencyLevel.QUORUM);
      bs.setString(0, process);
      bs.setInt(1, clientid);
      bs.setLong(2, deviceid);

      ResultSetFuture future = session.executeAsync(bs);
      Futures.addCallback(future, new FutureCallback<ResultSet>() {
        @Override
        public void onSuccess(ResultSet result) {
          logger.logInfo("successfully written");
        }

        @Override
        public void onFailure(Throwable t) {
          logger.logError("error= ", t);
        }
      }, executorService);
    } catch (Exception ex) {
      logger.logError("error= ", ex); …
Run Code Online (Sandbox Code Playgroud)

java multithreading rate-limiting backpressure datastax-java-driver

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

Cassandra Datastax驱动程序 - 连接池

我正在尝试理解Datastax Cassandra Driver中的连接池,所以我可以在我的Web服务中更好地使用它.

我有1.0版本的文档.它说:

Java驱动程序异步使用连接,因此可以在同一连接上同时提交多个请求.

他们通过连接了解什么?连接到群集时,我们有:构建器,群集和会话.其中哪一个是连接?

例如,有这个参数:

maxSimultaneousRequestsPerConnection - 在主机的所有连接上同时发出的请求数,然后创建更多连接.

因此,在连接池的情况下,这些连接会自动创建(这是我所期望的).但究竟是什么联系?集群对象?会议?

我正在尝试决定在我的网络服务中保持"静态"的内容.目前,我决定保持Builder静态,因此对于每次调用,我都会创建一个新的Cluster和一个新的Session.这个可以吗?如果群集是连接,那么它应该没问题.但是吗?现在,记录器说,每次通话:

2013:12:06 12:05:50 DEBUG群集:742 - 使用联系点启动新群集

2013:12:06 12:05:50 DEBUG ControlConnection:216 - [控制连接]刷新节点列表和令牌映射

2013:12:06 12:05:50 DEBUG ControlConnection:219 - [控制连接]刷新模式

2013:12:06 12:05:50 DEBUG ControlConnection:147 - [控制连接]成功连接到...

那么,它每次都连接到集群?这不是我想要的,我想重用连接.

那么,连接实际上是Session?如果是这种情况,我应该保持群集静态,而不是构建器.

我应该调用什么方法,以确保尽可能重用连接?

java cassandra datastax-java-driver

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