Spark выполняет запросы диапазона токенов на каждом узле, используя подготовленные операторы - PullRequest
0 голосов
/ 09 октября 2018

Я немного запутался, пытаясь понять, выполняет ли коннектор 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
...