查询 cassandra 错误在输入时没有可行的选择 'ALLOW'

Querying cassandra error no viable alternative at input 'ALLOW'

我正在尝试 运行 通过 spark 查询 Cassandra。

当运行执行此命令时:

val test = sc.cassandraTable[Person](keyspace,table)
               .where("name=?","Jane").collect

我得到了查询的适当输出。

当我尝试使用 where 语句将查询作为整个字符串输入时,出现错误。

我收到查询 json:

{"clause": " name = 'Jane' "}

然后把它变成一个字符串。

当运行宁

val query = (json \ "clause").get.as[String]
//turns json value into a string
val test = sc.cassandraTable[Person](keyspace,table)
                   .where(query).collect

我收到以下错误:

java.io.IOException: Exception during preparation of SELECT "uuid", "person", "age" FROM "test"."users" WHERE token("uuid") > ? AND token("uuid") <= ? AND  name = Jane    ALLOW FILTERING: line 1:232 no viable alternative at input 'ALLOW' (...<= ? AND  name = [Jane]    ALLOW...)
        at com.datastax.spark.connector.rdd.CassandraTableScanRDD.createStatement(CassandraTableScanRDD.scala:288)
        at com.datastax.spark.connector.rdd.CassandraTableScanRDD.com$datastax$spark$connector$rdd$CassandraTableScanRDD$$fetchTokenRange(CassandraTableScanRDD.scala:302)
        at com.datastax.spark.connector.rdd.CassandraTableScanRDD$$anonfun.apply(CassandraTableScanRDD.scala:328)
        at com.datastax.spark.connector.rdd.CassandraTableScanRDD$$anonfun.apply(CassandraTableScanRDD.scala:328)
        at scala.collection.Iterator$$anon.nextCur(Iterator.scala:434)
        at scala.collection.Iterator$$anon.hasNext(Iterator.scala:440)
        at com.datastax.spark.connector.util.CountingIterator.hasNext(CountingIterator.scala:12)
        at scala.collection.Iterator$class.foreach(Iterator.scala:893)
        at com.datastax.spark.connector.util.CountingIterator.foreach(CountingIterator.scala:4)
        at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:59)

我怀疑当我将 json 值“name = 'Jane'”转换为字符串时,我丢失了单引号因此我得到“name = Jane”,这当然会引发错误.我尝试用 \ 转义单引号,并在名字 Jane {"clause": " name = ''Jane'' "} 周围加上第二对单引号。它没有解决问题。

编辑:经过进一步测试,肯定是 json 丢失了单引号,CQL 需要它们来执行查询。任何人都可以建议 escape/save 单引号存在的方法吗?我尝试用 \ 双单引号 '' 转义。有没有办法使用 JSON 来提供正确的完整 CQL 语句?

请使用Unicode字符\u0027