根据这篇文章: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
我在将 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) 我需要启动嵌入式 cassandra 实例以通过单元测试对 Cassandra 键空间执行一些操作。编程语言是Java。启动嵌入式 cassandra 有哪些选项?
我使用了 mojo maven 插件,但是在使用以下命令启动实例后,我没有看到 cassandra 实例在本地主机上的默认端口 9042 处启动。插件:http ://www.mojohaus.org/cassandra-maven-plugin/usage.html 启动命令:mvn cassandra:run -Dcassandra.nativeTransportPort=9042
在使用方面是否缺少某些东西或者我需要使用不同的东西?
谢谢乔蒂
我前段时间发布了这个问题,但结果发现我使用的是本地资源而不是远程资源。
我有一台配置了spark : 2.1.1、cassandra : 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 却不行。
这是什么原因造成的?我该如何解决?
请告诉一个简单的解决方案,因为我有数百万个节点,所以需要更少的时间:
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
cassandra ×5
apache-spark ×1
datastax ×1
gremlin ×1
java ×1
nosql ×1
scala ×1
testing ×1
tinkerpop3 ×1
unit-testing ×1