Skip to content

Инджестор S3

Поддерживаемые типы файлов

  • CSV (*.csv)
  • TSV (*.tsv)
  • JSONL (*.jsonl)
  • JSON (*.json)
  • Parquet (*.parquet)
  • Apache Avro (*.avro)

Схемы для файлов Parquet и Avro извлекаются из разметки файла. Схемы для файлов без разметки (CSV, TSV, JSONL, JSON) выводятся из содержания файлов.

Настройка, предварительные условия и разрешения

Для учетной записи, под которой инджестор будет обращаться в S3, необходимы следующие привелегии: "s3:ListBucket", "s3:GetBucketLocation", "s3:GetObject".

Пример IAM политики для инжестора:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Ingestion",
      "Effect": "Allow",
      "Action": ["s3:ListBucket", "s3:GetBucketLocation", "s3:GetObject"],
      "Resource": [
        "arn:aws:s3:::your-bucket-name",
        "arn:aws:s3:::your-bucket-name/*"
      ]
    }
  ]
}

Возможности платформы (Important Capabilities)

Название Описание Поддерживается Настройки
Platform Instance Наличие у объекта связи с платформ инстансом Да Включено по умолчанию. Настраивается в рецепте.
Schema Metadata Вкладка Schema: схема датасета Да Включено по умолчанию.
Extract Tags Извлечение тегов из S3 бакетов и объектов Да Отключено по умолчанию.
Data Profiling (Профилирование данных) Вкладка Stats: количество строк, столбцов, статистики и графики Да Отключено по умолчанию. Настраивается в рецепте, в разделе profiling, или при создании источника с помощью Form.
Detect deleted entities Проверка удалены ли данные в источнике. Да Отключено по умолчанию. Настраивается в рецепте, в разделе stateful ingestion, или с помощью Form.
Critical data Чекбокс Critical полей Да Включено по умолчанию. Можно редактировать через Excel.

Пример рецепта

pipeline_name: 'Сюда_подставить_имя_pipeline'  # Наименование 'процесса', в рамках которого загружены метаданные. 
source:
  type: s3 # Платформа
  config:
    path_specs:
      - include: "s3://your-bucket-name/*/*.*"
      - include: "s3://your-bucket-name1/*/*.*"
        exclude:
        - **/tmp_10101000.csv

    aws_config:
      aws_endpoint_url: "https://s3.example-endpoint.net"
      aws_access_key_id: ACCESS_KEY_EXAMPLE
      aws_secret_access_key: "SECRET_KEY_EXAMPLE"
      aws_region: aws-example-region

    platform_instance: 'Сюда_подставить_platform_instance'  # Наименование источника в Каталоге данных.
    stateful_ingestion:
      enabled: true # Признак включения режима 'Stateful ingesting' - загружаемые данные имеют приоритет над загруженными ранее. Если в загружаемых отсутствуют таблицы/поля - они не будут отображаться в Каталоге после загрузки

sink:
  type: "catalog-rest" 
  config:
    server: 'https://catalog-server.example.net'
    token: 'EXAMPLE_TOKEN'

Спецификация путей

Спецификация путей (path_specs) - это список спецификации пути (path_spec) объектов, где каждый индивидуальный путь (path_spec) представляет один или более набор данных. path_spec.include представляет форматированный путь к набору данных. Этот путь должен оканчиватся на "*.*" или на "*.[ext]" для доступа к конечным файлам. Все уровни вложенности должны быть указаны в пути. Чтобы не указывать точное имя директории возможно использование "/*/". Для того, чтобы создать набор данных из директории, небходимо указать директиву {table} вместо имени директории в спецификации пути. path_spec.exclude можно использовать для исключения объектов. В данной спецификации для обозначения произвольного уровня вложенности может использоваться директива "**".