О Спарке существует несколько мифов:
Наверняка вы слышали об Искре и, скорее всего, даже знаете, что это такое и с чем его едят. Другое дело, что если вы не работаете профессионально с этим фреймворком, у вас в голове закрепилось несколько типичных стереотипов, из-за которых вы рискуете так и не узнать его поближе.
Миф 1: Spark не работает без Hadoop
Что такое Хадуп? Грубо говоря, это распределенная файловая система, хранилище данных с набором API для обработки этих самых данных.
И, как ни странно, правильнее было бы сказать, что Hadoop нужен Spark, а не наоборот!
Дело в том, что стандартные инструменты Hadoop не позволяют обрабатывать существующие данные с высокой скоростью, а Spark — позволяет. Итак, вопрос в том, нужен ли Spark Hadoop? Давайте посмотрим, что такое Spark:
Как видите, 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 джуниоров!
Синтаксис — это отдельная история: если вы прочитаете книгу «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. Подробную программу здесь выкладывать нет особого смысла, ее может найти любой желающий.
ЕВГЕНИЙ БОРИСОВ
Ная Технологии
Евгений Борисов занимается разработкой на Java с 2001 года и принимал участие в большом количестве Enterprise-проектов.
Пройдя путь от простого программиста до архитектора и устав от рутины, он стал художником-фрилансером.
Сегодня он пишет и проводит курсы, семинары и мастер-классы для различной аудитории: живые курсы по J2EE для офицеров израильской армии.
Spring — через WebEx для румын, Hibernate через GoToMeeting для канадцев, «Устранение неполадок и шаблоны проектирования» для украинцев.
P.S. Пользуясь случаем, поздравляю всех с Днем программиста!
Теги: #Big Data #java #bigdata #spark #scala #joker #Joker #frameworks #java vs scala-
Хабраштуки, Ооо
19 Oct, 24 -
Мысли Вслух, Или Кто Виноват.
19 Oct, 24 -
Jerk`n`talk #1: Реклама И Спам Вконтакте
19 Oct, 24 -
"Бабушка Онлайн" С Участием. Майкрософт
19 Oct, 24 -
Служба 911 (Бета)
19 Oct, 24