Я немного запутался, пытаясь понять, выполняет ли коннектор spark-cassandra запросы на основе токенов в каждом узле, если на Cassandra запрашивается полное сканирование таблицы (выберите ab, bc, ca из abc).
Являются ли эти запросы подготовленными утверждениями?Это будет так много подготовленных заявлений с разными идентификаторами подготовки?Использование подготовленных заявлений контролируется соединителем?Что произойдет, если мы запустим задание spark для полного сканирования таблицы каждые 10 минут на кластере Cassandra?Если я использую приведенный ниже код, как он получит результаты, будет ли он готовить множество запросов на основе токенов.
Может кто-нибудь, пожалуйста, пролить свет на это.
spark
.read
.cassandraFormat("abc", options.cassandraKeyspace)
.load()
.select(
Seq("ab", "bc", "ca", "db", "fb", "cv")
.zip(Seq("ab", "bc", "ca", "db", "fb", "cv"))
.map({ case(oldname, name) => col(oldname).alias(name) }): _*
)
.as[abc]
Ниже приведен пример2 строки / 3165 в таблице подготовленных операторов в Кассандре с различными различиями в порядке следования столбцов и с различными идентификаторами подготовки .i выполнял задание каждые 10 минут.
SELECT "ab", "bc", "ca", "db", "fb", "cv" FROM "xxx"."abc" WHERE token("ab") > ? ALLOW FILTERING
0xae8102f51f30a94624a2e5e932c8901a |
null
SELECT "db", "fb", "cv", "ab", "bc", "ca" FROM "xxx"."abc" WHERE token("ab") <= ? ALLOW FILTERING