Что такое потоковая обработка и зачем она нужна?

Потоковая обработка данных с AWS Kinesis и Lambda

Maksim Pecherskiy

Data Engineer

Пакетная обработка vs потоковая

chapter1_take_ms_dahkX.png

Потоковая обработка данных с AWS Kinesis и Lambda

Пакетная обработка vs потоковая

Пакетная обработка

  • «Лучше»
  • Большие наборы данных
  • Сложный анализ
  • Медленно движущиеся данные
  • Пример: ежедневный отчёт по продажам
  • Пример: прогноз продаж на следующий месяц
  • Пример: прогноз оттока клиентов

Потоковая обработка

  • «Круче»
  • Простой анализ: агрегация / фильтрация
  • Отдельные записи / микропакеты
  • Данные движутся БЫСТРО
  • Пример: обнаружение мошенничества
  • Пример: мониторинг ветряных турбин
  • Пример: оповещения в реальном времени
Потоковая обработка данных с AWS Kinesis и Lambda

Коди и автопарк

Коди

Коди рядом с велосипедом

Автопарк

коллаж транспортных средств

Потоковая обработка данных с AWS Kinesis и Lambda

Телематическая потоковая передача

chapter1_take_ms_IfvAm.png

chapter1_take_ms_tNX4d.png

chapter1_take_ms_frlCB.png

Потоковая обработка данных с AWS Kinesis и Lambda

AWS Kinesis

Потоковая обработка данных с AWS Kinesis и Lambda

Data Firehose

chapter1_take_ms_UPYak.png

Потоковая обработка данных с AWS Kinesis и Lambda

Потоки доставки

chapter1_take_ms_MDHnC.png

Потоковая обработка данных с AWS Kinesis и Lambda

Потоки доставки

chapter1_take_ms_ytekB.png

Потоковая обработка данных с AWS Kinesis и Lambda

Потоки доставки

chapter1_take_ms_gx6D1.png

Потоковая обработка данных с AWS Kinesis и Lambda

Создание клиента Firehose

import boto3

firehose = boto3.client('firehose',
aws_access_key_id=AWS_KEY_ID, aws_secret_access_key=AWS_SECRET,
region_name='us-east-1')
Потоковая обработка данных с AWS Kinesis и Lambda

Работа с потоками доставки

# Show created delivery streams
response = firehose.list_delivery_streams()

print(response['DeliveryStreamNames'])
['old-delivery-stream1', 'a-test-stream']
Потоковая обработка данных с AWS Kinesis и Lambda

Удаление потоков

# Show created delivery streams
response = firehose.list_delivery_streams()

# Delete them all! for stream_name in response['DeliveryStreamNames']:
firehose.delete_delivery_stream(DeliveryStreamName=stream_name)
Потоковая обработка данных с AWS Kinesis и Lambda

Обзор

  • Пакетная vs потоковая обработка
  • Коди и сбор телематики
  • AWS Kinesis
  • Потоки доставки Kinesis Firehose
  • AWS Kinesis Data Firehose
  • Список и удаление потоков доставки Firehose
  • Producer -> генератор данных
  • Destination -> место назначения данных
Потоковая обработка данных с AWS Kinesis и Lambda

Давайте потренируемся!

Потоковая обработка данных с AWS Kinesis и Lambda

Preparing Video For Download...