SlideShare a Scribd company logo
ETL со Spark
Старикам здесь не место
Вводный ликбез по BI
date user_id platform_id
01/01/15 1 1
01/01/15 1 2
platform_id platform_name
1 iOS
2 Desktop
date platform uniques
01/01/15 iOS 1
01/01/15 Desktop 2
материализация
раз в час
ETL
Пример: BI-платформа для игр
- система получает от мобильных клиентов
различные ивенты
- определяет к какому сегменту относится игрок
- дает игроку таргетированный контент
- строит отчеты
Немного истории
2012
Q4
2013
Q2
2013
Q4
2014
Q3
MySQL
Pentaho Kettle
BIRT
Greenplum
вместо
MySQL
Hive
HBase
MongoDB
Impala
Hive
HBase
ETL со Spark
С чем мы столкнулись
- методология и подходы, устаревшие 10 лет
назад
- нет понятных решений для deployment,
monitoring, scheduling, logging,...
- рынок BI-инженеров тормозит прогресс
Типичный ETL-job. Один из сотен
Нерешенные проблемы
- код-ревью: боль
- мержи и бранчинг: постоянные проблемы
- тестирование: только интеграционное, с
помощью FitNesse
- и многое другое...
- deployment: ssh-скрипты и Jenkins
- scheduling и запуск: опять Jenkins
- аггрегация логов: снова Jenkins
- мониторинг джобов: отчеты в BIRT
“Костыли” и “велосипеды”
Со всем лучшим уходим на Spark
- SQL из старых ETL переиспользуется с
помощью Spark SQL
- прежний паттерн дизайна Job’ов: иерархия
- scheduling и запуск на Jenkins
object SessionFactsJob extends SparkJob {
override def runJob(sc: SparkContext, jobConfig: Config) = {
...
sessionsRDD.registerTempTable("sessions")
sqlContext.sql(s"""
SELECT timestamp, count(distinct userId) uniqueUsersCount,
sum(duration)/count(*) avgSessionLength
FROM sessions WHERE timestamp > ${config.getLong(FromDate)}
ETL-job на Spark
- есть job’ы, осуществляющие
оркестрацию
- они выстроены в иерархию
- в любой момент, можно
перезапустить с нужными
параметрами определенную
группу job’ов
Паттерн “Иерархия Job’ов”
ooyala/spark-jobserver
- сервер spark job’ов:
- spray для REST-интерфейса
- Typesafe Config для конфигурации
- Job реализует trait, запаковывается в jar и
загружается POST’ом на сервер
Тестируемость
"Session facts job" should {
"overwrite aggregates, if they already exist" in {
...
SessionFactsJob.runJob(sc, config)
=== Array(DailySessionStats(parseDate("2014-10-30"), 1, 3, 12941))
}
}
Трассировка job’ов с NewRelic
@Trace + NewRelic.setTransactionName(null, "/HourlyJob")
Кроме этого
- кастомный процессинг (никаких UDF)
- наследование
- cross-cutting concerns
- типобезопасность
- удобство при интеграции с внешними системами
Перспективы
- Flume - это ночной кошмар Spark Streaming
- SQL-интерфейс поверх ElasticSearch - мечта
- Go-to для лямбда-архитектуры
ETL со Spark
Спасибо!
gitter.im/scalaby/public
Facebook: Scala Enthusiasts
Belarus
scala.by
Обсуждения
вопросы
ответы
@remeniuk, scalaby#13

More Related Content

PDF
FareBor Presentation
PDF
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
PPTX
Александр Сербул —1С-Битрикс — ICBDA 2015
PPTX
A Scaleable Implementation of Deep Learning on Spark -Alexander Ulanov
PDF
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
PDF
CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений ...
PPTX
DevOps для 1С
PDF
Alexey Savchenko, Evangelist, Unreal Engine/ Epic Games
FareBor Presentation
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
Александр Сербул —1С-Битрикс — ICBDA 2015
A Scaleable Implementation of Deep Learning on Spark -Alexander Ulanov
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений ...
DevOps для 1С
Alexey Savchenko, Evangelist, Unreal Engine/ Epic Games

Similar to ETL со Spark (20)

PDF
Говорим о СУБД языком HR
PDF
Открытое ПО и ФЗ 152
PDF
Использование распределённой очереди задач для обработки данных в бекенде спо...
PDF
Что должен уметь Linux программист
PPTX
разработка корп приложений на платформе 1с 8
PPTX
Мониторинг, тюнинг и оптимизация баз данных, используя продукты Dell Software
PPTX
Мониторинг, тюнинг и оптимизация баз данных, используя продукты Dell Software
PPTX
введение в SharePoint
PDF
Погружение в глубины черной бездны с Intel GPA
PPTX
Микросервисы в .NET Core
PDF
Cеминар в Виннице (22.03.2014)
PPTX
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
PPTX
Сервисы Azure для научных исследований
PPTX
Определение «лица» продукта в «маркетах» ДО начала его разработки
DOCX
петров антон Short cv2
PPTX
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
PPTX
Презентация 8bitМechanic
PDF
McAfee Encryption 2015
PPTX
А.Левенчук -- управление жизненным циклом актива
PPTX
clickhouse final presentation covers basics
Говорим о СУБД языком HR
Открытое ПО и ФЗ 152
Использование распределённой очереди задач для обработки данных в бекенде спо...
Что должен уметь Linux программист
разработка корп приложений на платформе 1с 8
Мониторинг, тюнинг и оптимизация баз данных, используя продукты Dell Software
Мониторинг, тюнинг и оптимизация баз данных, используя продукты Dell Software
введение в SharePoint
Погружение в глубины черной бездны с Intel GPA
Микросервисы в .NET Core
Cеминар в Виннице (22.03.2014)
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
Сервисы Azure для научных исследований
Определение «лица» продукта в «маркетах» ДО начала его разработки
петров антон Short cv2
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
Презентация 8bitМechanic
McAfee Encryption 2015
А.Левенчук -- управление жизненным циклом актива
clickhouse final presentation covers basics
Ad

More from Vasil Remeniuk (20)

PPTX
Product Minsk - РТБ и Программатик
PDF
Работа с Akka Сluster, @afiskon, scalaby#14
PDF
Cake pattern. Presentation by Alex Famin at scalaby#14
PDF
Scala laboratory: Globus. iteration #3
PPTX
Testing in Scala by Adform research
PPTX
Spark Intro by Adform Research
PPTX
Types by Adform Research, Saulius Valatka
PPTX
Types by Adform Research
PPTX
Scalding by Adform Research, Alex Gryzlov
PPTX
Scalding by Adform Research, Alex Gryzlov
PPTX
Spark by Adform Research, Paulius
PPTX
Scala Style by Adform Research (Saulius Valatka)
PPTX
Spark intro by Adform Research
PPTX
SBT by Aform Research, Saulius Valatka
PDF
Scala laboratory: Globus. iteration #2
PPTX
Testing in Scala. Adform Research
PDF
Scala laboratory. Globus. iteration #1
PDF
Cassandra + Spark + Elk
PDF
Опыт использования Spark, Основано на реальных событиях
PDF
Funtional Reactive Programming with Examples in Scala + GWT
Product Minsk - РТБ и Программатик
Работа с Akka Сluster, @afiskon, scalaby#14
Cake pattern. Presentation by Alex Famin at scalaby#14
Scala laboratory: Globus. iteration #3
Testing in Scala by Adform research
Spark Intro by Adform Research
Types by Adform Research, Saulius Valatka
Types by Adform Research
Scalding by Adform Research, Alex Gryzlov
Scalding by Adform Research, Alex Gryzlov
Spark by Adform Research, Paulius
Scala Style by Adform Research (Saulius Valatka)
Spark intro by Adform Research
SBT by Aform Research, Saulius Valatka
Scala laboratory: Globus. iteration #2
Testing in Scala. Adform Research
Scala laboratory. Globus. iteration #1
Cassandra + Spark + Elk
Опыт использования Spark, Основано на реальных событиях
Funtional Reactive Programming with Examples in Scala + GWT
Ad

ETL со Spark