当前位置: 首页 > 面试题库 >

如何使用Java类连接Cassandra

上官景铄
2023-03-14
问题内容

我这样做是为了连接cassandra。但是我的代码返回了错误。这是我的代码

public class CassandraConnection {

public static void main(String[] args) {
    String serverIp = "166.78.10.41";
    String keyspace = "gamma";
    CassandraConnection connection;

    Cluster cluster = Cluster.builder()
            .addContactPoints(serverIp)
            .build();

    Session session = cluster.connect(keyspace);


    String cqlStatement = "SELECT * FROM TestCF";
    for (Row row : session.execute(cqlStatement)) {
        System.out.println(row.toString());
    }

}
}

这是错误日志..

无法在项目CassandraConnection上执行目标:无法解析项目com.mycompany:CassandraConnection:jar:1.0-SNAPSHOT的依赖项:无法解析以下工件:org.specs2:scalaz-
effect_2.11.0-SNAPSHOT:jar:7.0。 1-SNAPSHOT,org.scalaz:scalaz-
effect_2.9.3:jar:7.1.0-SNAPSHOT:找不到工件org.specs2:scalaz-
effect_2.11.0-SNAPSHOT:jar:7.0.1-SNAPSHOT-> [帮助1 ]

要查看错误的完整堆栈跟踪,请使用-e开关重新运行Maven。使用-X开关重新运行Maven以启用完整的调试日志记录。

有关错误和可能的解决方案的更多信息,请阅读以下文章:[帮助1]
http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException


问题答案:

您对此事有研究吗?

选司机

您需要一种与cassandra通信的方法,最好的选择是使用高级API。您在这里有多种选择,但是当我们从较高的角度来看时,实际上有两种选择。

  1. 基于CQL的驱动程序 -节俭功能的高级抽象。同样,较新的工具(为cassandra提供支持/文档​​的公司)建议新的cassandra应用程序基于CQL。
  2. 基于节俭的驱动器 -可以访问低级存储,因此更容易出错。

我将使用datastax的CQL驱动程序。

从datastax的github repo下载并构建驱动程序, 或者 使用maven并添加以下依赖项:

<dependency>
  <groupId>com.datastax.cassandra</groupId>
  <artifactId>cassandra-driver-core</artifactId>
  <version>2.1.3</version>
</dependency>

<dependency>
  <groupId>com.datastax.cassandra</groupId>
  <artifactId>cassandra-driver-mapping</artifactId>
  <version>2.1.2</version>
</dependency>

选择maven是一个好主意,因为它将为您管理所有依赖关系,但是,如果您不使用maven,至少您将了解有关管理jar和读取堆栈跟踪的知识。

该驱动程序的文档很好。如果您不懂它,文档中将包含许多示例。

在整个示例中,我将使用以下两个变量

String serverIP = "127.0.0.1";
String keyspace = "system";

Cluster cluster = Cluster.builder()
  .addContactPoints(serverIP)
  .build();

Session session = cluster.connect(keyspace);

// you are now connected to the cluster, congrats!

String cqlStatement = "SELECT * FROM local";
for (Row row : session.execute(cqlStatement)) {
  System.out.println(row.toString());
}

创建/更新/删除

// for all three it works the same way (as a note the 'system' keyspace cant 
// be modified by users so below im using a keyspace name 'exampkeyspace' and
// a table (or columnfamily) called users

String cqlStatementC = "INSERT INTO exampkeyspace.users (username, password) " + 
                      "VALUES ('Serenity', 'fa3dfQefx')";

String cqlStatementU = "UPDATE exampkeyspace.users " +
                      "SET password = 'zzaEcvAf32hla'," +
                      "WHERE username = 'Serenity';";

String cqlStatementD = "DELETE FROM exampkeyspace.users " + 
                      "WHERE username = 'Serenity';";

session.execute(cqlStatementC); // interchangeable, put any of the statements u wish.

其他有用的代码

创建一个键空间

String cqlStatement = "CREATE KEYSPACE exampkeyspace WITH " + 
  "replication = {'class':'SimpleStrategy','replication_factor':1}";

session.execute(cqlStatement);

创建一个ColumnFamily(又名表)

// based on the above keyspace, we would change the cluster and session as follows:
Cluster cluster = Cluster.builder()
  .addContactPoints(serverIP)
  .build();
Session session = cluster.connect("exampkeyspace");

String cqlStatement = "CREATE TABLE users (" + 
                      " username varchar PRIMARY KEY," + 
                      " password varchar " + 
                      ");";

session.execute(cqlStatement);


 类似资料:
  • 有关错误和可能的解决方案的更多信息,请阅读以下文章:[Help 1]http://cwiki.apache.org/confluence/display/maven/dependencyresolutionException

  • 问题内容: 我正在使用Weblogic,Ejb3.0。Java 1.6 我需要通过Java代码访问Active Directory。我读了几种方法(Kerberos,LDAP) 有人可以建议我这样做的舒适​​方式吗?在哪里可以找到一些完整的代码示例, 谢谢,雷。 问题答案: 这是一个简单的代码,用于在W2K3上的JNDI中进行身份验证并进行LDAP搜索:

  • 问题内容: 我使用来了解Java与运算符的工作方式。 它是用同样的操作? 问题答案: 不。使用和做不一样。 在Java中,字符串实例是不可变的。 因此,如果您这样做: 每次连接时都在创建新的字符串。 另一方面,StringBuilder就像一个缓冲区,可以在追加新Strings时根据需要增长。 经验法则是(由于我的评论而改变): 如果要进行大量连接(例如,在循环内进行连接,或生成由多个字符串连接的

  • 问题内容: 文件包含和及其说明(+ )。 是否可以依靠上述文件建立连接?(仅提供数据库名称即可): 为了找到该文件,我必须知道默认的Oracle主目录,我需要在Windows注册表中检入然后具有所有文件,然后检查哪个文件首先出现在上。有没有办法在客户端计算机上自动找到此文件? 问题答案: 我什至不知道可以在瘦驱动程序中使用tnsnames,但是显然它是在版本10中添加的: http://docs.

  • 我正试图找出如何创建一个工作Kafka生产者对一个AWS MSK集群。集群启用了TLS和SASL/scram。这是我第一次使用Kafka,关于这方面的文档相当少。我目前拥有的针对未加密本地群集的代码是: 我有字符串类型变量和,它们是从AWS秘密管理器中提取的,包含集群的用户名和密码。我还需要指定哪些其他属性? AWS和Kafka网站上的文档都是关于在本地文件系统上生成JAAS和truststore

  • 问题内容: 我认为在理解OOP的工作方式方面存在问题。我已经更改了它可以工作的代码,但这不是我认为的正确方法。以下情况(不,我不是自己创建用户登录,实际上只是为了让本地开发人员更好地理解OOP): 我有一个database.php文件: 因此,在此类中,我正在创建数据库连接,然后返回连接(对象?) 然后,我有第二个类,著名的User类(实际上,我没有使用自动加载功能,但是我知道): 那是我的两堂课