0
내가 다음 문 사용하여 스파크 카산드라 커넥터를 사용하여 카산드라 테이블을 조회 할 스파크 카산드라 커넥터 사용하여 쿼리 :"누락 EOF"오류 메시지
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
쿼리를 만들 수 있습니까?
실제로'name'은 기본 키가 아니며 테이블의 일부 열입니다. 'LIMIT 10 ALLOW FILTERING : 비 기본 키 열 (name)에있는 술어가 아직 지원되지 않습니다. '라는 제안을 실행할 때이 오류 메시지가 나타납니다. 'name'의 값은 고유하지 않습니다. 'name' 필드를 공유하는 많은 다른 엔트리가 있습니다. 이것에 대한 커넥터를 활용하는 다른 방법이 있습니까? 아니면 SQL이 할 수있는 유일한 방법입니까? – Mnemosyne
이름이 임의의 열일 경우 커넥터는이 테이블을 완전히로드하는 데 사용됩니다. 커넥터가 Spark보다이 값을 더 효율적으로 찾을 수있는 방법은 없습니다. "In values"세트가 충분히 큰 경우 다양한 스파크 조인을 조사해야합니다. – RussS
그래, 이제 이것이 커넥터의 범위 밖에 있다는 것을 이해했습니다. 고맙습니다! – Mnemosyne