小编Eri*_*rez的帖子

如何在具有 SAI 索引的 TEXT 列上使用 CONTAINS?

根据这篇文章:https://docs.datastax.com/en/storage-attached-index/6.8/sai/saiFaqs.html,TEXT类型支持CONTAINS操作。但我收到这样的错误:com.datastax.driver.core.exceptions.InvalidQueryException: Cannot use CONTAINS on non-collection column

谁能解释一下如何在 TEXT 列上使用 SAI 索引以便可以使用 CONTAINS 操作(如 SQL LIKE 操作)在此列中进行搜索?

PS 如果在包含 TEXT 值列表的列上创建 SAI 索引,我就能够使用 CONTAINS 操作。但不想自己生成子字符串的所有组合。至少根据文档,应该可以在 TEXT 上使用 CONTAINS ...

数据库架构:

CREATE TABLE IF NOT EXISTS some_table (
 id text,
 data text,
 list_for_search list<text>,
 PRIMARY KEY (id))
WITH CLUSTERING ORDER BY (id ASC);

CREATE CUSTOM INDEX IF NOT EXISTS some_table_search_idx
 ON some_table (data)
 USING 'StorageAttachedIndex' WITH OPTIONS = {'case_sensitive': 'false'};
Run Code Online (Sandbox Code Playgroud)

文凭试 6.8.3

cassandra datastax-enterprise datastax

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

如何使用 Java 将向量插入 Cassandra?

我在将 Java Vector 类型映射到 Java 中的 Cassandra 表 (Astra DB) 时遇到问题。这个想法是通过带有矢量搜索的 ANN 进行查询以返回电影推荐。

这是我的表定义:

CREATE TABLE movies (
  movie_id INT PRIMARY KEY,
  title TEXT,
  release_date DATE,
  movie_vector vector<float,7>);
Run Code Online (Sandbox Code Playgroud)

哪个映射到类:

public class Movie {
    private int movieId;
    private String title;
    private LocalDate releaseDate;
    private CqlVector<Float> vector;
Run Code Online (Sandbox Code Playgroud)

(完整的 getter 和 setter)

它的属性通过以下 CQL 绑定到准备好的语句:

private final static String strCQLINSERT = "INSERT INTO movies "
        + "(movie_id,title,release_date,movie_vector) "
        + "VALUES (?,?,?,?)";
Run Code Online (Sandbox Code Playgroud)

然后,我使用 Java Vector API 从数组定义一个向量float,然后尝试将其映射到我的类中。

Movie movie = new Movie(); …
Run Code Online (Sandbox Code Playgroud)

java cassandra nosql datastax-astra vector-search

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

启动嵌入式 Cassandra 实例进行单元测试

我需要启动嵌入式 cassandra 实例以通过单元测试对 Cassandra 键空间执行一些操作。编程语言是Java。启动嵌入式 cassandra 有哪些选项?

我使用了 mojo maven 插件,但是在使用以下命令启动实例后,我没有看到 cassandra 实例在本地主机上的默认端口 9042 处启动。插件:http ://www.mojohaus.org/cassandra-maven-plugin/usage.html 启动命令:mvn cassandra:run -Dcassandra.nativeTransportPort=9042

在使用方面是否缺少某些东西或者我需要使用不同的东西?

谢谢乔蒂

testing unit-testing cassandra embedded-cassandra

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

无法连接到远程 Spark Master - ROR TransportRequestHandler:为单向消息调用 RpcHandler#receive() 时出错

我前段时间发布了这个问题,但结果发现我使用的是本地资源而不是远程资源。

我有一台配置了spark : 2.1.1cassandra : 3.0.9和的远程计算机scala : 2.11.6

Cassandra 的配置位置为localhost:9032,spark master 的配置位置为localhost:7077

Spark master 设置为127.0.0.1,其端口设置为7077

我可以远程连接到 cassandra,但无法使用 Spark 执行相同的操作。

连接到远程 Spark Master 时,出现以下错误:

错误 TransportRequestHandler:为单向消息调用 RpcHandler#receive() 时出错。

这是我通过代码进行的设置

val configuration = new SparkConf(true)
                        .setAppName("myApp")
                        .setMaster("spark://xx.xxx.xxx.xxx:7077")
                        .set("spark.cassandra.connection.host", "xx.xxx.xxx.xxx")
                        .set("spark.cassandra.connection.port", 9042)
                        .set("spark.cassandra.input.consistency.level","ONE")
                        .set("spark.driver.allowMultipleContexts", "true")
val sparkSession = SparkSession
                   .builder()
                   .appName("myAppEx")
                   .config(configuration)
                   .enableHiveSupport()
                   .getOrCreate()
Run Code Online (Sandbox Code Playgroud)

我不明白为什么 cassandra 工作得很好而 Spark 却不行。

这是什么原因造成的?我该如何解决?

scala cassandra apache-spark spark-cassandra-connector

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

通过java驱动在DSE-5.0.5中一次性添加多个顶点和多条边

请告诉一个简单的解决方案,因为我有数百万个节点,所以需要更少的时间:

  for(int i=1100000; i<=1200000;i++){
        GraphStatement q1 = new SimpleGraphStatement("g.addV(label, 'Asset','name','Asset"+i+"','type','"+1+"').as('a')").setGraphName("lookingglass");

    System.out.println("Added node----"+i);
    }

 for(int i=1100000;i<=1200000;i++){
        //int j=i+1;
    Vertex v1 = dseSession.executeGraph("g.V().has('name','Org"+1000+"')").one().asVertex();
    Vertex v2 = dseSession.executeGraph("g.V().has('name','Asset"+i+"')").one().asVertex();

    SimpleGraphStatement s = new SimpleGraphStatement(
            "def v1 = g.V(id1).next()\n" +
                    "def v2 = g.V(id2).next()\n" +
                    "v1.addEdge('HAS', v2)")
            .set("id1", v1)
            .set("id2", v2);

    dseSession.executeGraph(s);
    System.out.println("Added Edge "+i);
    }
    System.out.println("Done");
Run Code Online (Sandbox Code Playgroud)

由于我正在进行整个图搜索,这需要更长的时间。我们是否可以有一个简单的单个查询来添加一个 vartex 并将一条边从该查询添加到现有顶点,从而减少延迟?

注意我也尝试过以下方法,但以下方法似乎已被废弃,因此给出错误(Vertex 不支持用户提供的标识符:

 g.addV().property(id, "A").as("a").
      addV().property(id, "B").property("value", 100).as("b").
      addV().property(id, "C").property("value", 200).as("c").
      addV().property(id, "D").property("value", 500).as("d").
      addV().property(id, "E").property("value", 1000).as("e").
      addV().property(id, "Z").property("value", 900).as("z").
      addE("link").from("a").to("b").property("weight", 80).
      addE("link").from("a").to("c").property("weight", 20).
      addE("link").from("b").to("d").property("weight", 50). …
Run Code Online (Sandbox Code Playgroud)

cassandra gremlin datastax-enterprise tinkerpop3 datastax-enterprise-graph

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