Skip to content

Обработка данных

Для тюнинга производительности запросов в приложении предусмотрены профили исполнения.

Настройка профиля делается прямым INSERT или UPDATE в таблице meta.ref_execution_profile:

  • name - идентификатор профиля
  • job_options - опции профиля в формате json
  • author - кто сделал запись (техническое поле)
  • create_dttm - дата создания записи (техническое поле)
  • updated_dttm - дата изменения записи (техническое поле)

Как высчитываются итоговые параметры исполнения с учетом дефолтных можно почитать в разделе "Execute job" документации Product Map, ниже приведена выжимка по основным:

  • async_factor - максимальное количество SQL запросов в параллель в рамках одного исполнения job
  • params - раздел с перемеными, влияющий на логику работы узла
    • storage_key - значения ключа дистрибуции по-умолчанию, если движок данных это поддерживает (default: [])
    • create_index - создавать ли индекс по бизнес ключу, после создания таблицы (default: False)
    • analyze - запускать ли сбор статистик после создания таблицы (default: True)
  • advanced - параметры сесии (SET опции) для различных СУБД, задаются как список строк, без ведущего SET
    • greenplum - любые SET опции greenplum, например "greenplum": ["max_statement_mem=4000MB", "gp_default_storage_options=orientation=column"]
    • postgresql - любые SET опции postgresql, например "postgresql": ["idle_in_transaction_session_timeout=5min" ]

Дополнительные параметры

В данном разделе приведены дополнительные настройки для различных движков баз данных, позволяющие оптимизировать загрузку данных из внешних таблиц.

В режиме быстрой загрузки создается т.н. внешняя таблица, то есть данные физически не перемещаются в базу данных а остаются в S3, а в базе создается таблица, ссылающаяся на эти данные.

Создание внешней таблицы осуществляется узлом import. Конфигурации такого режима отличаются для разных движков.

Greenplum

Для быстрой загрузки данных к кластере должен быть установлен и сконфигурирован Greenplum Platform Extension Framework (PXF).

Для создания внешней таблицы должно быть известно имя PXF профиля указывающего на S3 хранилище, из которого осуществляется загрузка.

Для создания внешней таблицы в узле import необходимо задать следующие параметры:

{
   "type": "import",                          # быстрое чтение (создание внешней таблицы)
   "body": {
        "path": "s3://<file name>",           # путь на s3
        "columns": {                          # cписок стобцов в файле с типами
            "column name": "fs_type",
            "column name": "fs_type",
            ...
        }
    },
    "options": {
        "format": "csv" | "parquet",          # file format
        "delimiter": '<delimiter char>'       # default: ',' только для csv
    },
    "params": {
        "pxf_profile": '<имя pxf профиля>'
    }
}

Задание кодировки и создание первичных ключей во внешних таблицах не поддерживается. Кодировка предполагается utf8.

Spark

Для быстрой загрузки файлов кластер Spark должен быть настроен для работы с выбранным S3 провайдером, пример настроек.

Для создания внешней таблицы в узле import необходимо задать следующие параметры:

{
   "type": "import",                          # быстрое чтение (создание внешней таблицы)
   "body": {
        "path": "s3://<file name>",           # путь на s3
        "columns": {                          # cписок стобцов в файле с типами
            "column name": "fs_type",
            "column name": "fs_type",
            ...
        }
    },
    "options": {
        "format": "csv",                      # file format
        "delimiter": '<delimiter char>',      # default: ','
        "encoding": '<encoding>',             # default: 'utf8'
    },
    "params": {
        "s3a_mode": true,
    }
}

На данный момент поддерживаются только csv файлы.