У меня есть большой стол Cassandra. Я хочу загрузить только 50 строк из Cassandra. Следующий код
val ds = sparkSession.read
.format("org.apache.spark.sql.cassandra")
.options(Map("table" -> s"$Aggregates", "keyspace" -> s"$KeySpace"))
.load()
.where(col("aggregate_type") === "DAY")
.where(col("start_time") <= "2018-03-28")
.limit(50).collect()
Следующий код выдвигает оба предиката из методов where
, но не ограничивает их. Правда ли, что извлекаются все данные (1 миллион записей)? Если нет, то почему время выполнения этого кода и кода без limit(50)
примерно одинаковое.
limit
по умолчанию не преобразуется в ограничение CQL. Однако, если вы работаете с базовым RDD, вы можетеasInstanceOf[CassandraRDD]
там, где для CQL доступен специально определенныйlimit
метод. Смотрите отредактированный ответ - person dk14   schedule 02.04.2018