当前位置: 首页 > 知识库问答 >
问题:

使用datastax驱动程序将数据插入cassandra

督劲
2023-03-14

我们正在尝试使用DataStax驱动程序将CSV文件中的数据插入Cassandra。有哪些方法可以做到这一点?

我们目前使用运行cqlsh从CSV文件加载。

共有1个答案

夏意蕴
2023-03-14

这个问题相当模糊。通常,你应该能够提供代码,并给出一个不太适合你的例子。

话虽如此,我(本周)刚刚为工作中的开发人员讲授了一门关于这个主题的课程。所以我可以给你们举几个简单的例子。

首先,应该构建一个单独的类来处理Cassandra连接对象。我通常用几个构造函数来构建它,这样就可以用几种不同的方式来调用它。但每种方法本质上都调用了一个connect方法,看起来像这样:

public void connect(String[] nodes, String user, String pwd, String dc) {
    QueryOptions qo = new QueryOptions();
    qo.setConsistencyLevel(ConsistencyLevel.LOCAL_ONE);

    cluster = Cluster.builder()
        .addContactPoints(nodes)
        .withCredentials(user,pwd)
        .withQueryOptions(qo)
        .withLoadBalancingPolicy(
            new TokenAwarePolicy(
                DCAwareRoundRobinPolicy.builder()
                .withLocalDc(dc)
                .build()
                )
        )
        .build();
        session = cluster.connect();

在此基础上,我还编写了一些简单的方法来公开会话对象的一些功能:

public ResultSet query(String strCQL) {
    return session.execute(strCQL);
}

public PreparedStatement prepare(String strCQL) {
  return session.prepare(strCQL);
}

public ResultSet query(BoundStatement bStatement) {
  return session.execute(bStatement);
}

有了这些方法,我就可以在服务层内调用这些方法了。一个简单的INSERT(准备一个语句并将值绑定到它)如下所示:

String[] nodes = {"10.6.8.2","10.6.6.4"};
CassandraConnection conn = new CassandraConnection(nodes, "aploetz", "flynnLives", "West-DC");

String userID = "Aaron";
String value = "whatever";
String strINSERT = "INSERT INTO stackoverflow.timestamptest "
    + "(userid, activetime, value) "
    + "VALUES (?,dateof(now()),?)";     

PreparedStatement pIStatement = conn.prepare(strINSERT);
BoundStatement bIStatement = new BoundStatement(pIStatement);
bIStatement.bind(userID, value);
conn.query(bIStatement);

此外,DataStaxJava驱动程序在其Git存储库中有一个名为“示例”的文件夹。这里有一个“基本”示例的链接,我建议进一步阅读。

 类似资料:
  • 嘿,我是Cassandra的新手,我对Spring jdbc模板很友好。 有人能解释一下这两种方法的区别吗?你能建议哪一种更好用吗? 谢谢。

  • 我正在使用php的Datastax Cassandra驱动程序,希望能够检查是否查询失败,在数据库中没有找到结果。现在,如果查询失败,日志报告如下 如果查询成功,它将返回预期的数据。下面是函数 根据发布的建议,我最后做了以下几点 谢谢你的建议

  • 我从CLI中创建了这样的专栏家族- 现在,我试图使用Datastax Java驱动程序插入到这个列系列中- 但是,如果我试图插入到我在中创建的另一个表中,我可以插入到该表中。 任何帮助都将不胜感激。

  • 我被datastax cassandra驱动程序卡住了,它抛出了这个错误: 我已经用gradle导入了库,我看到org.slf4j: slf4j-api: 1.7.5在“外部库”树中(我正在使用Intellij IDEA)。 你有办法解决这个问题吗?我发现这个帖子接近我的问题(NoClassDefFoundError-datastax Java driver for Cassandra),但没有人

  • 我试图理解Datastax Cassandra驱动程序中的连池,因此我可以更好地在我的Web服务中使用它。 我有留档的1.0版。它说: Java驱动程序异步使用连接,因此可以在同一个连接上同时提交多个请求。 他们通过连接理解什么?当连接到集群时,我们有:一个生成器、一个集群和一个会话。他们中的哪一个是连接? 例如,有一个参数: MaxSimultaneousRecestsPerConnection

  • 问题内容: 在进行大量数据加载时,基于日志数据增加计数器,但是遇到超时异常。我正在使用Datastax 2.0-rc2 Java驱动程序。 这是服务器无法跟上问题的问题(即服务器端配置问题),还是客户端无聊的等待服务器响应的问题?无论哪种方式,我都可以进行简单的配置更改来解决此问题吗? 节点之一在大致发生时报告此情况: 问题答案: 虽然我不了解此问题的根本原因,但我可以通过增加conf / cas