4

我的实习需要我熟悉 cassandra。我从以下网址下载了 astyanax cassandra: https ://github.com/Netflix/astyanax

通过以下命令从源代码构建 astyanax 后: git clone git@github.com:Netflix/astyanax.git cd astyanax ./gradlew build

我创建了一个新的 java 项目并从这里复制+粘贴示例代码: https ://github.com/Netflix/astyanax/blob/master/astyanax-examples/src/main/java/com/netflix/astyanax/examples/ AstCQLClient.java

现在问题出现了。我确实修复了路径配置,即导入从 gradlew 构建生成的所有 .jar 文件。但是红色破折号突出显示了一行(长)代码:

context = new AstyanaxContext.Builder()
.forCluster("Test Cluster")
.forKeyspace("test1")
.withAstyanaxConfiguration(new AstyanaxConfigurationImpl()      
    .setDiscoveryType(NodeDiscoveryType.RING_DESCRIBE)
)
.withConnectionPoolConfiguration(new ConnectionPoolConfigurationImpl("MyConnectionPool")
    .setPort(9160)
    .setMaxConnsPerHost(1)
    .setSeeds("127.0.0.1:9160")
)
.withAstyanaxConfiguration(new AstyanaxConfigurationImpl()      
    .setCqlVersion("3.0.0")
    .setTargetCassandraVersion("1.2"))
.withConnectionPoolMonitor(new CountingConnectionPoolMonitor())
.buildKeyspace(ThriftFamilyFactory.getInstance());

警告消息是:无法解析类型 org.apache.cassandra.thrift.Cassandra$Client。它是从所需的 .class 文件中间接引用的

我需要专家的帮助。非常感谢!!!

4

2 回答 2

3

听起来您缺少 thrift 依赖项(thrift jar 文件)。要么,要么您使用的是不兼容的 thrift 版本。简单的解决方案是使用 Maven 并将 Astyanax 依赖项添加到您的项目中。更复杂的解决方案是验证您导入的 thrift 版本是否与正在使用的 Astyanax 版本兼容。

Maven 依赖项(将其添加到您的 pom 文件中):

<dependency>
    <groupId>com.netflix.astyanax</groupId>
    <artifactId>astyanax</artifactId>
    <version>1.56.42</version>
</dependency>

您可以使用Astyanax 的 wiki为您的 Astyanax 客户端制定兼容版本的 Thrift 。但是知道你是从 Github 构建项目的,你想要与 Cassandra 兼容的最新 thrift,所以你在 Thrift 9.0+ 之后(例如libthrift-0.9.0.jar)。

于 2013-07-24T05:15:55.807 回答
0

我认为首先你应该在本地正确安装 Cassandra Server。您可以从Cassandra Repo找到最新的源代码。

然后您可以按照此链接配置 Cassandra Server。尽管我认为您不必更改配置文件中的任何内容,因为 cassandra 源已正确配置为在本地模式下运行。

然后从 IDE 创建一个 Maven 项目,添加 @Lyuben Todorov 显示的依赖项,即

<dependency>
    <groupId>com.netflix.astyanax</groupId>
    <artifactId>astyanax</artifactId>
    <version>1.56.42</version>
</dependency>

然后尝试一些来自 Astyanax wiki的测试示例

于 2013-07-24T07:31:29.793 回答