2016-05-18 3 views
1

Я - опытный разработчик и администратор RDBMD. Но я новичок в Apache Cassandra и Spark. Я изучил CQL Cassandra, и в документации говорится, что CQL не поддерживает объединения и подзапросы, потому что это было бы слишком неэффективно в Cassandra из-за его распределенной природы данных.Apache Cassandra and Spark

Итак, я пришел к выводу, что в распределенных данных env., Объединения и подзапросы не поддерживаются, потому что они плохо влияют на производительность.

Но потом я изучил Spark, который также работает с распределенными данными, но Spark поддерживает все функции SQL, включая объединения и подзапросы. Несмотря на то, что Spark не является системой базы данных и, следовательно, даже не имеет индексов ... Итак, мой вопрос заключается в том, как Spark поддерживает соединения и подзапросы распределенных данных ?, и эффективно ли это делает?

Заранее спасибо.

ответ

1

Apache spark имеет концепцию RDD(Resilient Distributed DataSet), которая создается в памяти.

В основном фундаментальный data structure в искры.

Joins, queries выполняются на этих RDD и, поскольку он работает в memory, по этой причине он очень эффективен.

Перейди через документы ниже для получения некоторого представления о Плотном Dataset

http://spark.apache.org/docs/latest/programming-guide.html#resilient-distributed-datasets-rdds 
2

Искра делает «тяжелую работу» требуется для выполнения объединения на распределенные данных. Он выполняет большие перетасовки для выравнивания данных по клавишам до фактического выполнения объединений. Это в основном означает, что для любого соединения требуется очень большой объем перемещения данных, если исходные источники данных не разбиты на разделы на основе ключей, используемых для соединения.

C * не позволяет создавать общие соединения, подобные этому из-за стоимости, он ориентирован на рабочие нагрузки OLTP и требует полной перетасовки данных, по сути, является OLAP.

Смежные вопросы