#apache-spark #cassandra
#apache-spark #кассандра
Вопрос:
В последнее время я читал о Apache Cassandra
том, как это работает и как использовать его для проектов IoT, особенно при необходимости базы данных на основе временных рядов..
Тем не менее, я начал замечать, что Apache Spark
это часто упоминается, когда люди Cassandra
тоже говорят.
Вопрос в том, что, пока я могу использовать Cassandra
кластер узлов для обслуживания моего приложения, для хранения и чтения данных, зачем мне это нужно Apache Spark
? приветствуются любые полезные варианты использования!
Ответ №1:
Ответ широкий, но обобщающий … Cassandra обладает высокой масштабируемостью, и существует множество сценариев, в которых она подходит, но CQL sintax имеет некоторые ограничения, если у вас нет готовой схемы для некоторых запросов.
Если вы хотите использовать свои данные без ограничений и выполнять аналитические рабочие нагрузки с вашими данными cassandra или объединяться с другими таблицами, Spark является наиболее подходящим дополнением. Spark имеет тесную интеграцию с Cassandra.
Я рекомендую вам проверить эти слайды: http://www.slideshare.net/patrickmcfadin/apache-cassandra-and-spark-you-got-the-the-lighter-lets-start-the-fire?qid=48e2528c-a03c-49b4-879e-45599b2aff34amp;v=amp;b=amp;from_search=5
Комментарии:
1. Я бы добавил, что в настоящее время разъем Cassandra для Spark не поддерживает Spark 2.0.
2. @SaifCharaniya Нет, он поддерживает 2.0.0 и Scala 2.10 и 2.11 search.maven.org/… В этом случае 2.11 — это версия Scala, а 2.0.0 — версия Spark.
Ответ №2:
Кассандра предназначена для хранения данных, а искра — для выполнения некоторых вычислений поверх них. Аналогия с Hadoop: Cassandra похожа на HDFS, где Искра похожа на уменьшение карты.
Особенно при вычислениях, при использовании DataStax Cassandra connector
может использоваться локальность данных. Если вам нужно выполнить какое-то вычисление, которое изменяет строку (но на самом деле не зависит ни от чего другого), то эта операция оптимизирована для выполнения локально на каждой машине в кластере без какого-либо перемещения данных в сети.
То же самое относится и ко многим другим нагрузкам Spark, действия (некоторая функция, которая изменяет данные) выполняются локально, и клиенту отправляется только результат. Насколько я знаю, когда вы хотите выполнять аналитику поверх данных, хранящихся в Cassandra, Spark хорошо поддерживается и пользуется популярностью. Если вам не нужно выполнять какие-либо операции с данными, вы все равно можете использовать Spark для других целей, как я упоминал ниже.
Spark streaming
может использоваться для загрузки или экспорта данных из Cassandra (я лично часто им пользовался). Тот же импорт / экспорт данных может быть достигнут с помощью небольших рукописных агентов JDBC, но код Spark streaming, который я написал для приема данных объемом 10 ГБ из Cassandra, содержит менее 20 строк кода со встроенной многопоточностью и интерфейсом администратора, где я могу видеть ход выполнения задания.
Благодаря Spark Zeppelin
тому, что мы можем визуализировать данные Cassandra с помощью Spark, мы можем создавать красивые пользовательские интерфейсы с небольшим кодом Spark, где пользователи могут даже вводить входные данные и видеть результат в виде графика / таблицы и т. Д.
Примечание: На самом деле, визуализация может быть лучше с Kibana / ElasticSearch или Solr / Banana при использовании с Cassandra, но их очень сложно настроить, а индексация имеет свои собственные проблемы.
Есть много других вариантов использования, но лично я использовал Spark в качестве швейцарского армейского ножа для нескольких задач.
Ответ №3:
Apache cassandra имеет такую функцию, как быстрое чтение и запись, поэтому вы можете использовать ее с потоковой передачей apache spark для записи ваших данных непосредственно в cassandra без устаревания. В качестве примера использования вы можете рассмотреть любое видеоприложение для загрузки видео с помощью потоковой передачи и прямого сохранения его в cassandra blob.