Коли ми востаннє запитували: «Що таке???», ми розглядали платформу потокового передавання даних, сумісну з протоколом __ Apache Kafka __®
Flink спочатку був прийнятий як проект Apache у грудні 2014 року, тому він існує деякий час. Зростання потокової обробки призвело до прискореного інтересу та використання в останні кілька років. Flink — це дещо складна система для встановлення та внутрішнього використання, що вимагає спеціального інженерного таланту. Навіть
Я збираюся запозичити з веб-сторінки Apache Flink тут. Apache Flink — це платформа та механізм розподіленої обробки для обчислень із збереженням стану над необмеженими та обмеженими потоками даних. Flink був розроблений для роботи в усіх поширених кластерних середовищах і виконання обчислень зі швидкістю в пам’яті та в будь-якому масштабі. Я не хочу більше копіювати те, що є на їхньому веб-сайті, тому, якщо ви не впевнені щодо Flink, подивіться.
У найпростішому вигляді DeltaStream дає вам потужність Flink без необхідності працювати з Flink. Взагалі. Для свого тесту я використав їх
Реєструючись, ви отримуєте безкоштовну 14-денну пробну версію. Створюється зразок кластера Kafka під назвою «trial_store», який ви можете використовувати замість власних даних для випробування. Демонстрація містить кілька тем для гри. Піктограми в розділі ДІЇ дозволяють видалити тему або переглянути деталі та вміст у темі та в ній.
Ось деталі теми переглядів сторінок для довідки, яку ми використаємо пізніше.
Гаразд, у нас є кластер Kafka і теми в ньому. А тепер давайте зробимо щось цікаве. Як згадувалося у вступі, найцікавіше, що я можу зробити, це збагачувати та/або фільтрувати дані під час польоту, перш ніж він приземлиться в кінцевому пункті призначення, як-от база даних/склад/озеро. Для цих цілей ми переходимо до Workspace.
До цієї частини потрібно було трохи звикнути. База даних і схема в DeltaStream — це лише організаційні папки. Ви можете створити 'n' кількість баз даних, а в базі даних ви можете мати 'n' кількість схем. Схеми міститимуть макет визначень ваших об’єктів DeltaStream, відомих як STREAM, CHANGELOG, MATERIALIZED VIEW і TABLE. Таблиця пов’язана з таблицею бази даних у щось на зразок PostgreSQL, а матеріалізоване подання — це спосіб зберегти дані в наборі результатів, не розміщуючи їх десь конкретно. Я не збираюся нічого робити ні з ким із тих у цьому блозі; Я збираюся зосередитися на потоці та журналі змін.
Я створюю тему «Потік переглядів сторінок» у кластері Kafka на наступному знімку екрана. Я думаю про це як про таблицю визначення теми. Ми призначили назви полів і сказали їм, яку тему використовувати та який формат даних. Нам не потрібно повністю виправдовувати кластер trial_store, оскільки він встановлений як стандартний у полі зі списком у верхній частині. Після виконання цієї команди вона з’явиться в TestDB.public. Потім я можу запитати щось на зразок SELECT * FROM PAGEVIEWS, і я почну бачити дані на панелі результатів унизу.
Далі я оголошую журнал змін, який підтримується темою користувача та впорядковується за UserID. Журнал змін схожий на потік, але дозволяє інтерпретувати події в темі як події UPSERT. Події потребують первинного ключа; DeltaStream інтерпретує кожну подію як вставку або оновлення для заданого первинного ключа. У цьому випадку журнал змін відображає конкретні деталі користувача, наприклад стать та інтереси.
Ось де ми починаємо розважатися. Я створю новий потік, який збагачує потік переглядів сторінок даними з журналу змін users_log , використовуючи ідентифікатор користувача як значення ключа для приєднання. Тепер це дає мені унікальну тему в кластері з даними з двох різних тем. Звідси я можу відфільтрувати його за допомогою щось на кшталт regionid і записати результати цього запиту до кінцевого пункту призначення, такого як база даних, склад чи озеро. Це дозволило мені збагатити та відфільтрувати дані під час польоту перед посадкою, таким чином покращивши затримку та зменшивши витрати на обчислення та зберігання.
Отже, що таке DeltaStream? Це дуже простий спосіб використовувати Apache Flink, нічого про нього не знаючи та не роблячи з ним безпосередньо. З мого прикладу ви бачили, як просто було підключитися до Apache Kafka, а потім прочитати, приєднатися та відфільтрувати дані. Інші наразі підтримувані з’єднання – Kinesis, PostgreSQL, Snowflake і Databricks, і мені сказали, що незабаром будуть доступні ClickHouse і Iceberg.
Зрештою, DeltaStream дає вам потужність Apache Flink без необхідності мати справу з Apache Flink, і ви можете зробити це за допомогою SQL замість Java. Якщо ви маєте справу з потоковими даними або плануєте це реалізувати, це, безперечно, дуже розумне та зручне рішення.
Ознайомтеся з моїми іншими статтями «Що за біса таке…» за посиланнями нижче:
**