Откакто концепцията за големи данни беше въведена в света на програмирането, се появиха много различни технологии, рамки. Обработката на данни може да бъде категоризирана в две различни парадигми. Единият е пакетна обработка, а другият е поточна обработка. Различни технологии възникнаха за различни парадигми, решавайки различни проблеми със света на големи данни, например Apache Spark, Apache Flink, Apache Storm и т.н. Като разработчик или бизнес, винаги е предизвикателство да поддържате различни технологични стекове и технологии. Следователно, Apache Beam идва на помощ!

Какво е Apache Beam?

Apache Beam (Batch + strEAM) е унифициран модел с отворен код за дефиниране на пакетни и поточни канали за паралелна обработка на данни.

Унифицираният модел като в beam излага един абстрактен слой на API както за задания за пакетна, така и за поточна обработка, за разлика от други рамки с различни API за пакетна и поточна обработка.

Уникални характеристики на Apache Beam

Уникалните характеристики на лъча са следните:

  1. Унифицирано — Използвайте един модел на програмиране както за групови, така и за стрийминг случаи.
  2. Преносим — Изпълнявайте конвейери в множество среди за изпълнение. Тук средите за изпълнение означават различни бегачи. Пр. Spark Runner, Dataflow Runner и др
  3. Разширяем – Пишете персонализирани SDK, IO конектори и библиотеки за трансформация.

Beam SDK и Runners

Към днешна дата beam има три SDK за програмиране

Beam Runners превеждат тръбопровода на лъча в съвместима с API бекенд обработка по ваш избор. Понастоящем Beam поддържа бегачи, които работят със следните бекенди.

  1. Apache Spark
  2. Apache Flink
  3. Apache Samza
  4. Google Cloud Dataflow
  5. Hazelcast Jet
  6. Twister2

Direct Runner за стартиране на хост машина, която се използва за целите на тестването.

Основни понятия в Apache Beam

Apache Beam има три основни абстракции. Те са

Тръбопровод:

Тръбопроводът е първата абстракция, която трябва да бъде създадена. Той поддържа цялата работа по обработка на данни от началото до края, включително четене на данни, манипулиране на данни и запис на данни в приемник. Всеки тръбопровод приема опции/параметри, които показват къде и как да се изпълнява.

PCколекция:

Pcollection е абстракция на разпределени данни. pcollection може да бъде ограничена, т.е. крайни данни, или неограничена, т.е. безкрайни данни. Първоначалната pcollection се създава чрез четене на данни от източника. От този момент нататък pcollections са източникът и приемникът на всяка стъпка в тръбопровода.

Трансформиране:

Трансформацията е операция за обработка на данни. Трансформация се прилага към една или повече pcollections. Сложните трансформации имат други трансформации, вложени в тях. Всяка трансформация има общ apply метод, където се намира логиката на трансформацията.

Пример за тръбопровод

Тук нека напишем конвейер за извеждане на всички json файлове, където името започва с гласна.

Нека вземем примерен вход. Име на файла като input.json

Въведеното трябва да бъде JSON с разделители от нов ред.

Включете следните зависимости във вашия pom.xml

Нека кодираме тръбопровода на лъча. Следвай стъпките

Изход:

Пълен код:

За по-напреднали концепции вижте документацията на Apache Beam

Първоначално публикувано на https://www.loginradius.com.