"Missing EOF" 使用 spark-cassandra-connector 查询时的错误消息

"Missing EOF" Error message when querying using the spark-cassandra-connector

我想使用以下语句使用 spark-cassandra-connector 查询 cassandra table:

sc.cassandraTable("citizens","records")
  .select("identifier","name")
  .where( "name='Alice' or name='Bob' ")

我收到此错误消息:

org.apache.spark.SparkException: Job aborted due to stage failure: 
Task 0 in stage 81.0 failed 4 times, most recent failure: 
Lost task 0.3 in stage 81.0 (TID 9199, mydomain): 
java.io.IOException: Exception during preparation of 
SELECT "identifier", "name" FROM "citizens"."records" WHERE token("id") > ? AND token("id") <= ? AND name='Alice' or name='Bob'   LIMIT 10 ALLOW FILTERING:
line 1:127 missing EOF at 'or' (...<= ? AND name='Alice' [or] name...)

我在这里做错了什么以及如何使用连接器的 where 子句进行 or 查询?

您的 OR 子句是无效的 CQL。对于这几个键值(我假设 name 是一个键),您可以使用 IN 子句。

.where( "name in ('Alice', 'Bob') ")

where 子句用于将 CQL 下推到 Cassandra,因此只有有效的 CQL 可以进入它。如果您正在寻找 Spark Side Sql-Like 语法,请查看 SparkSql 和数据集。