Как подключить к Apache Spark проприетарный источник данных: теория, практика, грабли, костыли BigData и машинное обучение
Apache Spark -- это популярный фреймворк для обработки данных. В него из коробки встроена интеграция с HDFS и разными форматами хранения, а, кроме этого, есть опенсорсные коннекторы почти к чему угодно. Но иногда эти коннекторы работают недостаточно оптимально, а для проприетарного хранилища просто не существует готовых решений. Тогда нужно разобраться в деталях API и написать коннектор самому.
Я расскажу о своём опыте прикручивания Spark к проприетарному хранилищу Яндекса YT. На примерах покажу, с какими трудностями пришлось столкнуться, какие есть тонкости и подводные камни. Расскажу, как написать свой коннектор: просто и быстро, или сложнее, но более эффективный. Я объясню внутреннее устройство Spark'а в этой области, обращая внимание на неочевидное поведение и места для расширения.
5 лет работает с большими данными, а с Apache Spark имеет дело с релиза 1.5.2 (сейчас предпочитает 3.0.1). С помощью Spark и Spark Structured Streaming разрабатывала разные аналитические системы: от геоаналитики на сотнях терабайт данных до ML-платформы реального времени. По ходу дела много копалась во внутреннем устройстве Spark'а, встраивала в него поддержку проприетарных хранилищ, кастомизировала планировщик и оптимизировала джойны сотен таблиц. Собрала кучу недокументированных граблей на этом пути, о чём любит рассказывать коллегам.
Работала в компаниях Onefactor и Одноклассники, сейчас в Яндексе занимается прикручиванием Spark'a к внутренней инфраструктуре.