Ваши Данные Такие Большие: Введение В Spark На Java

Апач Спарк — универсальный инструмент для обработки больших данных, с помощью которого можно писать на Hadoop из различных СУБД, транслировать всевозможные источники в реальном времени, выполнять сложную обработку данных параллельно, и все это без помощи каких-то батчей, скриптов и SQL-запросы, но с использованием функционального подхода.



Ваши данные такие большие: введение в Spark на Java

О Спарке существует несколько мифов:

Spark нужен Hadoop: он не нужен! Spark нуждается в Scala: не обязательно! Почему? Посмотрите под катом.

Наверняка вы слышали об Искре и, скорее всего, даже знаете, что это такое и с чем его едят. Другое дело, что если вы не работаете профессионально с этим фреймворком, у вас в голове закрепилось несколько типичных стереотипов, из-за которых вы рискуете так и не узнать его поближе.



Миф 1: Spark не работает без Hadoop

Что такое Хадуп? Грубо говоря, это распределенная файловая система, хранилище данных с набором API для обработки этих самых данных.

И, как ни странно, правильнее было бы сказать, что Hadoop нужен Spark, а не наоборот! Дело в том, что стандартные инструменты Hadoop не позволяют обрабатывать существующие данные с высокой скоростью, а Spark — позволяет. Итак, вопрос в том, нужен ли Spark Hadoop? Давайте посмотрим, что такое Spark:

Ваши данные такие большие: введение в Spark на Java

Как видите, Hadoop здесь нет: есть API, есть SQL, есть стриминг и многое другое.

И Hadoop не требуется.

Вы спросите, а как насчет кластерного менеджера? Кто будет запускать ваш Spark в кластере? Александр Сергеевич? Именно из этого вопроса вырастает ножка нашего мифа: чаще всего YARN под Hadoop используется для распределения заданий Spark по кластеру, но есть альтернативы: например, Apache Mesos, который можно использовать, если по каким-то причинам вы не это не похоже на Hadoop.

Миф 2. Spark написан на Scala, а значит, он тоже должен быть написан на Scala

Работать со Spark можно как под Java, так и под Scala, при этом второй вариант многие считают лучшим по нескольким причинам: Скала - это круто! Более краткий и удобный синтаксис.

API Spark адаптирован для Scala и выходит раньше, чем API Java; Давайте по порядку, начав с первого тезиса о крутости и модности Scala. Контраргумент прост и умещается в одну строку: Вы, возможно, удивитесь, но большинство разработчиков Java. знают Java ! А это стоит дорого — команда сеньоров, перейдя на скалу, превращается в StackOverflow-Driven джуниоров!

Ваши данные такие большие: введение в Spark на Java

Синтаксис — это отдельная история: если вы прочитаете книгу «Java vs. Scala», вы увидите подобные примеры (как видите, код просто суммирует длины строк): Скала

  
  
   

val lines = sc.textFile("data.txt") val lineLengths = lines.map(_.length) val totalLength = lineLengths.reduce(_+_)

Джава

JavaRDD<String> lines = sc.textFile ("data.txt"); JavaRDD<Integer> lineLengths = lines.map (new Function() { @Override public Integer call (String lines) throws Exception { return lines.length (); } }); Integer totalLength = lineLengths.reduce (new Function2() { @Override public Integer call(Integer a, Integer b) throws Exception { return a + b; } });

Год назад даже в документации Spark примеры выглядели именно так.

Однако давайте посмотрим на код в Java 8: Ява 8

JavaRDD<String> lines = sc.textFile ("data.txt"); JavaRDD<Integer> lineLengths = lines.map (String::length); int totalLength = lineLengths.reduce ((a, b) -> a + b);

Выглядит неплохо, не так ли? В любом случае также нужно понимать, что Java — это привычный нам мир: Spring, шаблоны проектирования, концепции и многое другое.

На Scala Java-разработчику придется столкнуться с совершенно другим миром, и здесь стоит задуматься, готовы ли вы или ваш заказчик к такому риску.

Все примеры взяты из отчета Евгения.

Евгений Борисов Борисова о Spark, который был представлен на JPoint 2016 и стал, кстати, лучшим докладом конференции.

Хотите продолжить: RDD, тестирование, примеры и живое программирование? Смотреть видео: Больше искры для богов больших данных А если после просмотра репортажа Евгения вы испытали экзистенциальный катарсис, поняв, что вам нужно познакомиться со Спарком поближе, сделать это с Евгением в прямом эфире вы сможете уже через месяц: 12-13 октября в Санкт-Петербурге пройдет большое двухдневное мероприятие.

Тренинг «Добро пожаловать в Spark» .

Давайте обсудим проблемы и решения, с которыми изначально сталкиваются неопытные разработчики Spark. Давайте разберемся в синтаксисе и всяких хитростях, а главное посмотрим, как можно написать Spark на Java, используя известные вам фреймворки, инструменты и концепции, такие как Inversion of Control, шаблоны проектирования, Spring framework, Maven/Gradle, Junit. .

Все они помогут сделать ваше приложение Spark более элегантным, читаемым и знакомым.

Будет много заданий, живое кодирование, и в конечном итоге вы выйдете из этого обучения с достаточными знаниями, чтобы начать самостоятельно работать на Spark-e в привычном мире Java. Подробную программу здесь выкладывать нет особого смысла, ее может найти любой желающий.

на странице обучения .

ЕВГЕНИЙ БОРИСОВ Ная Технологии

Ваши данные такие большие: введение в Spark на Java

Евгений Борисов занимается разработкой на Java с 2001 года и принимал участие в большом количестве Enterprise-проектов.

Пройдя путь от простого программиста до архитектора и устав от рутины, он стал художником-фрилансером.

Сегодня он пишет и проводит курсы, семинары и мастер-классы для различной аудитории: живые курсы по J2EE для офицеров израильской армии.

Spring — через WebEx для румын, Hibernate через GoToMeeting для канадцев, «Устранение неполадок и шаблоны проектирования» для украинцев.

P.S. Пользуясь случаем, поздравляю всех с Днем программиста! Теги: #Big Data #java #bigdata #spark #scala #joker #Joker #frameworks #java vs scala

Вместе с данным постом часто просматривают: