Что такое Apache Spark? сочинение пример

ООО "Сочинения-Про"

Ежедневно 8:00–20:00

Санкт-Петербург

Ленинский проспект, 140Ж

magbo system

Apache Spark – одна из ключевых систем обработки больших данных в мире. Apache Spark был изначально разработан в 2009 году в AMPLab Калифорнийского университета в Беркли. Многие банки, игровые компании, правительства и крупные технологические компании, такие как Amazon, Google и Microsoft, используют этот механизм. Он может предоставлять собственные привязки для различных языков, таких как языки программирования Java, Scala, Python и R, а также поддерживает запросы SQL, машинное обучение, потоковую передачу данных и обработку графиков. Эти стандартные библиотеки можно комбинировать для создания сложных рабочих процессов, а также индивидуально использовать для повышения производительности труда разработчиков.

Apache Spark – это платформа с открытым исходным кодом, построенная на скорости, простоте использования и усовершенствованной аналитике. У Spark есть несколько преимуществ по сравнению с другими технологиями больших данных и MapReduce, такими как Hadoop и Storm.

Его простота использования и скорость позволяют выполнять масштабную обработку данных, что делает его быстрее, чем Hadoop. Восходящая обработка в Spark обеспечивает лучшую производительность. Вы можете быстро писать приложения на Java, Scala или Python, используя Spark. Вы также можете использовать его для интерактивного запроса данных внутри оболочки. В настоящее время Spark держит мировой рекорд по масштабной сортировке на диске.

Spark Core

Spark Core обеспечивает распределенную диспетчеризацию задач, планирование и базовые функции ввода / вывода через API, сосредоточенный вокруг абстракции RDD. Этот интерфейс похож на модель программирования более высокого порядка. После передачи функции в Spark программа драйвера использует похожие операции, такие как отображение, фильтрация или уменьшение. Затем он планирует параллельное выполнение функции в кластере. Эти операции и соединения принимают RDD в качестве входных данных и создают новые RDD. СДР неизменны. Отслеживая происхождение каждого СДР, его можно восстановить в случае потери данных. Объекты в Python, Java или Scala могут содержаться в RDD.

Python или Scala

Spark обычно можно использовать с Python или Scala. При использовании среды Play, Scala обеспечивает лучшую производительность благодаря способности Play использовать технологии реального времени, потоковую передачу и серверную передачу.

Когда вы работаете с API DataFrame, между Python и Scala нет особой разницы. Однако следует помнить, что пользовательские функции гораздо менее эффективны, чем их эквиваленты в Scala, поэтому рекомендуется использовать встроенные выражения при работе с Python. Рекомендуется при использовании Python не обмениваться данными между DataFrame и RDD, поскольку это требует сериализации и десериализации данных, что может быть дорогостоящим.

Как безопасность типов, так и количество дополнительных функций, которые вы можете иметь при работе с Python или Scala, заслуживают высокой оценки. Тем не менее, Python будет хорошим выбором при работе с небольшими специальными программами, а Scala будет работать лучше при работе над большими проектами в производстве. Это в основном потому, что статически типизированный язык, такой как Scala, намного проще при рефакторинге. Хотя может показаться, что Scala является гораздо лучшим выбором, Python оказывается выгодным при работе с наукой о данных из-за доступности широкого спектра инструментов.

Spark RDD

Концепция Resilient Distributed Dataset (RDD) является важным фактором Apache Spark. СДР – это строительные блоки Spark, которые представляют собой просто набор объектов Java или Scala, представляющих данные с точки зрения разработчика. Операции на RDD также могут быть распределены по кластеру и выполняться в параллельном пакетном процессе, что приводит к быстрой и масштабируемой параллельной обработке. СДР – это исходный интерфейс прикладной программы, представленный Spark, а все остальные высокоуровневые API по сути являются СДР.

СДР можно создавать из простых текстовых файлов, баз данных SQL, хранилищ NoSQL, корзин Amazon S3 и многого другого. Большая часть API Spark Core построена на этой концепции RDD, обеспечивая традиционную карту и сокращая функциональность, а также предоставляет встроенную поддержку для объединения наборов данных, фильтрации, выборки и агрегирования.

Несмотря на многочисленные преимущества СДР, они также являются некоторыми проблемами. Легко создавать неэффективные цепочки преобразования, и они медленны с не-JVM языками, такими как Python, они не могут быть оптимизированы Spark. Также трудно понять, что происходит, когда вы работаете с ними, поскольку вы не можете сразу увидеть решение, потому что цепочки преобразования не очень читабельны.

Spark работает распределенным образом, объединяя основной процесс драйвера, который разделяет приложение Spark на задачи и распределяет их среди многих процессов-исполнителей, выполняющих эту работу. Эти исполнители могут быть увеличены и уменьшены в соответствии с потребностями приложения.

Фреймы данных

API DataFrame был реализован из-за множества несоответствий и проблем, возникающих при работе с RDD. Это позволяет использовать язык запросов для воздействия на данные с абстракцией более высокого уровня. Интерфейс для взаимодействия с данными упрощается, поскольку абстракция более высокого уровня представляет собой логический план, который представляет данные и схему. Потому что логический план будет преобразован в физический план для исполнения, потому что Spark определит наиболее эффективный способ сделать то, что вы хотите сделать. Благодаря этому DataFrames оптимизируются, поэтому при преобразовании данных будут приниматься более разумные решения, что сделает их быстрее, чем RDD.

Более конкретно, повышение производительности связано с двумя вещами, с которыми вы часто сталкиваетесь при чтении DataFrames: настраиваемое управление памятью (проект Tungsten), которое обеспечит гораздо более быструю работу Spark при использовании ЦП ограничения и оптимизированные планы выполнения (оптимизатор Catalyst), частью которых является логический план DataFrame.

Набор данных

Есть также некоторые недостатки при работе с DataFrames из-за потери безопасности типов во время компиляции, что делает код ошибочным. Решение этой проблемы дано нам в виде DataSets. Наборы данных предлагают преимущества как от RDD, так и от DataFrames, такие как возвращение безопасности типов и использование лямбда-функций и оптимизаций. Как и DataFrames, DataSets также построены на основе RDD, но обеспечивают определенные преимущества.

Таким образом, DataSet стал вторым основным API Spark. Поэтому набор данных может иметь две различные характеристики: строго типизированный API и нетипизированный API.

Поскольку в Python отсутствует безопасность типов во время компиляции, доступен только нетипизированный API DataFrame. Наборы данных Spark статически типизированы, тогда как Python является динамически типизированным языком программирования. Поэтому DataFrames или нетипизированный API доступны при работе со Spark в Python.

В заключение, преимуществом работы с API-интерфейсом DataSet, который включает в себя как DataSets, так и DataFrames, являются статическая типизация и безопасность типов времени выполнения, абстракция более высокого уровня над данными, а также производительность и оптимизация. DataSet API вынуждает работать с более структурированными данными, следовательно, упрощает использование API.

Зарегистрируйся, чтобы продолжить изучение работы

    Поделиться сочинением
    Ещё сочинения
    Нет времени делать работу? Закажите!

    Отправляя форму, вы соглашаетесь с политикой конфиденциальности и обработкой ваших персональных данных.