В каком виде данные приходили в вашу систему?

«В каком виде данные приходили в вашу систему?» — вопрос из категории ETL и пайплайны данных, который задают на 33% собеседований Data Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В моих проектах данные обычно проходили через многослойную архитектуру (например, медиану или кирпич).

  1. Сырой слой (Raw/Stage): Данные поступали в исходном формате (JSON, CSV, Avro) с минимальной обработкой — только извлечение и сохранение. Часто использовались временные метки и идентификаторы для отслеживания.

    # Пример: Загрузка сырых данных в Stage (используя Spark)
    raw_df = spark.read.json("s3://bucket/raw_events/date=2023-10-01/*.json")
    raw_df.write.mode("append").parquet("s3://bucket/stage/events/")
  2. Стандартизованный слой (Cleaned/Base): Данные очищались, приводились к единой схеме, валидировались и обогащались базовыми вычислениями. На этом этапе мы избавлялись от дубликатов и некорректных значений.

  3. Слой бизнес-логики (Core/Curated): Данные агрегировались и трансформировались согласно бизнес-правилам. Создавались витрины данных, готовые для анализа или использования в приложениях.

Поток: Источник (API/лог-файлы/БД) → Raw Layer (сырые) → Cleaned Layer (очищенные) → Core Layer (агрегированные). Инструменты: Apache Airflow для оркестрации, Spark/Pandas для обработки, Parquet для хранения.