"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 和数据集。
我想使用以下语句使用 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 和数据集。