У меня довольно своеобразная проблема.В механизме анализа искры DSE я часто получаю статистику, которую я сохраняю на кассандре в маленьком столе.Так как я держу таблицу урезанной, и она должна обслуживать веб-интерфейс с консолидированной информацией, я просто хочу запросить всю таблицу в спарк и отправить результаты через API.Я пробовал два метода для этого:
val a = Try (sc.cassandraTable [Data] (пространство ключей, таблица) .collect ()). ToOption
val query = "SELECT * FROM keyspace.table"
val df = spark.sqlContext.sql (запрос) val list = df.collect ()
Я делаю это в программе Scala.Когда я использую метод 1, работа с искрой загадочным образом застревает, показывая этап 10 из 12 навсегда.Проверено на странице логов и искровых работ.Когда я использую второй метод, он просто сообщает мне, что такой таблицы не существует:
Неизвестное исключение: org.apache.spark.sql.AnalysisException: Таблица или представление не найдены: keyspace1
. table1
;строка 1 поз 15;'Project [*] + -' UnresolvedRelation keyspace1
. table1
Интересно, что я протестировал оба метода в оболочке spark на кластере, и они прекрасно работают.В моей программе есть много других запросов, выполненных с использованием метода 1, и все они работают нормально, главное отличие состоит в том, что в каждом из них основной ключ секционирования всегда имеет условие, в отличие от этого запроса (верно и для этой конкретной таблицы).
Вот структура таблицы:
CREATE TABLE keyspace1.table1 (
userid text,
stat_type text,
event_time bigint,
stat_value double,
PRIMARY KEY (userid, stat_type))
WITH CLUSTERING ORDER BY (stat_type ASC)
Любая надежная диагностика проблемы или обходной путь будет высоко ценится