标签: spring-data-cassandra

Cassandra uuid或来自Java的uuid文本

我在想,如果我创建一个文本列,而不是使用uuid列创建Cassandra表,最后我将在其中插入Java.util.uuid.random字符串.因此,如果我使用文本代替Cassandra单向,那么性能方面会有什么不同

cassandra datastax cassandra-2.0 spring-data-cassandra

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

如何阻止Cassandra尝试自动连接

我有这个项目,我正在尝试根据配置连接到不同的数据库类型.我有它为Mongo和MySQL工作,并通过使用加载Beans切换@ConditionalOnProperty(name = "settings.data.source", havingValue = "mongodb")

现在我想添加Cassandra,但是一旦我将以下依赖项添加到我的pom,它就开始尝试连接到localhost上的Cassandra节点.

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-cassandra</artifactId>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

我希望能够更好地控制何时加载Cassandra资源.

当我添加Mongo依赖项时,它不会尝试自动连接:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

有谁熟悉这种行为?我该怎么控制呢?我并不总是需要Cassandra连接......

spring-boot spring-data-cassandra

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

spring-data-cassandra,Cassandra将List <Integer>存储为字段

我有问题存储List的字段作为我的表的字段在cassandra数据库.

我正在使用spring-data-cassandra,版本1.4.1.RELEASE.

我的模型包含:

@Column
@CassandraType(type = DataType.Name.LIST)
private List<Integer> somedata;
Run Code Online (Sandbox Code Playgroud)

我想在我的配置类中使用SchemaAction.RECREATE_DROP_UNUSED架构操作自动创建我的db表:

@Override
public SchemaAction getSchemaAction() {
    return SchemaAction.RECREATE_DROP_UNUSED;
}
Run Code Online (Sandbox Code Playgroud)

它尝试创建表,但发生以下异常:

Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: expected 1 of typed arguments for the property  'somedata' type is 'interface java.util.List' in the entity <my class here>
Run Code Online (Sandbox Code Playgroud)

spring cassandra spring-data-cassandra

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

将 cassandra list&lt;frozen&lt;list&lt;int&gt;&gt;&gt; 字段映射到 spring-data-cassandra 中的 Java

有人可以指出我如何将声明的字段list<frozen<list<int>>>映射回 spring-data-cassandra 中的 java。我可以简单地保存数据,List<List<Integer>>>但在从数据库读取时不起作用,未找到编解码器异常弹出。

非常感谢帮助。

cassandra spring-data-cassandra

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

哪个更适合与Java进行cassandra交互?

我需要从AWS C *表中插入和提取数据。我的数据生产者是通过Java 8的Spring Boot定义的。

因此,我应该在稳定和高效的项目中使用哪一个。我有办法(我猜这里)1. Sprinda-data-JPA。2. datastax的cassandra-driver-core。

cassandra datastax-java-driver spring-data-cassandra cassandra-3.0

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

如何从 Spark 与 Cassandra 建立区域/直流感知连接?

我正在使用 spark-sql 2.4.1、spark-cassandra-connector_2.11-2.4.1.jar 和 java8。当我试图从表中获取数据时,我遇到了

java.io.IOException: Failed to write statements to keyspace1.model_vals. The
latest exception was
  An unexpected error occurred server side on cassandra-node1: com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: org.apache.cassandra.exceptions.ReadTimeoutException: Operation timed out - received only 0 responses.
Run Code Online (Sandbox Code Playgroud)

那么如何从火花代码建立到 Cassandra db 的区域/直流感知连接?

YML

现有的

spring:
  data:
      cassandra:
        keyspace-name: raproduct
        contact-points:
                    - cassandra-node1
                    - cassandra-node2
        port: 9042 
Run Code Online (Sandbox Code Playgroud)

变成

spring:
  data:
      cassandra:
        connection:
          local_dc: southeast-1
        keyspace-name: raproduct
        contact-points:
                    - cassandra-node1
                    - cassandra-node2
        port: 9042 
Run Code Online (Sandbox Code Playgroud)

但它没有反映/应用更改后的“local_dc”。如何在 spring-data 中做到这一点?

cassandra spring-data datastax-java-driver apache-spark spring-data-cassandra

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

Spring Boot 和 Spring Data with Cassandra:在失败的数据库连接上继续

我将 Spring Boot 和 Spring Data 与 Cassandra 一起使用。在应用程序启动时,spring 建立到数据库的连接以设置模式并初始化 spring 数据存储库。如果数据库不可用,应用程序将不会启动。

我希望应用程序只记录一个错误并启动。当然,我不能再使用存储库,但其他独立于数据库的服务(其余控制器等)应该可以工作。也很高兴在执行器健康检查中看到 cassandra 已关闭。

对于 JDBC,有一个spring.datasource.continue-on-error属性。我找不到与 Cassandra 类似的东西。

我还尝试创建自定义 cassandra 配置并尝试在 CqlSession 创建时捕获异常,但我无法实现所需的行为。

编辑:正如@a​​dutra 所建议的,我尝试设置advanced.reconnect-on-init,应用程序尝试建立连接,但应用程序未完全初始化(例如无法访问 REST 控制器)

@Configuration
public class CustomCassandraConfiguration extends CassandraAutoConfiguration {
    @Bean
    public DriverConfigLoaderBuilderCustomizer driverConfigLoaderBuilderCustomizer() {
        return builder -> builder.withBoolean(DefaultDriverOption.RECONNECT_ON_INIT, true);
    }
}
Run Code Online (Sandbox Code Playgroud)

EDIT2:我现在有工作示例(应用程序启动,cassandra 的自定义健康检查),但如果感觉很丑陋:

自定义Cassandra自动配置

@Configuration
public class CustomCassandraConfiguration extends CassandraAutoConfiguration {
    @Bean
    public DriverConfigLoaderBuilderCustomizer driverConfigLoaderBuilderCustomizer() {
        return builder -> builder.withBoolean(DefaultDriverOption.RECONNECT_ON_INIT, true);
    }
}
Run Code Online (Sandbox Code Playgroud)

自定义CassandraDataAutoConfiguration

@Configuration
public class CustomCassandraAutoConfiguration extends CassandraAutoConfiguration …
Run Code Online (Sandbox Code Playgroud)

spring cassandra spring-data spring-boot spring-data-cassandra

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

如何确保 CassandraOperations.selectOneById() 初始化 POJO 中的所有字段?

我正在使用 Spring Data Cassandra 1.3.4.RELEASE 来保留我拥有的类的实例。该类是用 Groovy 编写的,但我认为这并不重要。我已经实现了一个 CrudRepository,我正在将一个 CassandraOperations 实例注入到 repo 实现类中。我可以成功插入、删除和执行大多数其他操作。但是,我遇到的一个场景会破坏我的测试用例。我的实体类看起来像这样:

@Table("foo")
class FooData {
  @PrimaryKey("id")
  long id
  @Column("created")
  long updated
  @Column("name")
  String name
  @Column("user_data")
  String userData
  @Column("numbers")
  List numberList = []
}
Run Code Online (Sandbox Code Playgroud)

在我的测试用例中,我碰巧在调用 CassandraOperations.insert(entity) 之前只设置了几个字段,例如 'id' 和 'updated',因此在插入时实体实例中的大多数字段为空。但是 numberList 字段不为空,它是一个空列表。在 insert() 之后,我直接调用 CassandraOperations.selectOneById(FooData.class, id)。我得到了一个 FooData 实例,并且在我保存它时初始化的字段填充了数据。但是,我在我的测试中检查内容相等性,但它失败了,因为空列表没有作为从 CassandraOperations.selectOneById() 返回的 POJO 中的空列表返回。它实际上是空的。我认为这可能是某种 Cassandra 优化。它似乎发生在实例化 POJO/实体的 CGLIB 代码中。这是一个众所周知的“

spring-data-cassandra

0
推荐指数
1
解决办法
1082
查看次数