2. Конфигурация CSV-uploader (application.yml)
Файл application.yml – основной конфигурационный файл модуля CSV-uploader, в котором задана логика и порядок
работы загрузчика, а также другие настройки необходимые для корректной работы адаптера.
2.1. Пример файла application.yml
# Настройки авторизации
auth:
# Режим аутентификации
# DISABLED - аутентификация отключена
# JWT - (ранее upload.jwt-auth) включает окно запроса JWT на странице "Загрузка" для аутентификации в rest-uploader
# STUDIO - включает аутентификацию по логину и паролю в Datamart Platform Studio
mode: ${AUTH_MODE:DISABLED}
# Настройки аутентификации в режиме STUDIO
studio:
# Запрос логина и пароля на странице "Загрузка", (отдельно для каждого datamart).
# При false используются реквизиты в блоке datamarts:
ui-prompt: true
datamarts:
# Реквизиты для авторизации используемые на странице "Загрузка" если ui-prompt: false, а также при загрузке по расписанию.
- datamart_mnemonic: datamart25
username: user
password: passwd
organization_ogrn: ogrn
http-server:
# Порт для старта веб сервера
port: ${HTTP_PORT:8080}
# Включить веб-сервер
enabled: ${HTTP_ENABLED:true}
file-size:
# Ограничение на размер отправляемого файла (в мегабайтах)
restriction: ${SEND_FILE_SIZE_RESTRICTION:1024}
environment:
# Папка для ошибочных файлов
error-folder: ${ENVIRONMENT_ERROR_FOLDER:error}
prostore-rest-client:
enabled: true # true / false # выключение доступа к Простору
persistence-datamart: ${PERSISTENCE_DATAMART:persistence} # датамарт, в котором будут располагаться таблицы с данными сервиса
datasource: ${PERSISTENCE_DATASOURCE:} # по умолчанию пусто, тогда берется единственный датасорс из настроек Простора
table-flk-journal: ${PERSISTENCE_FLK_JOURNAL_TABLE:csv_uploader_flk_journal} # таблица журнала ФЛК
table-upload-journal: ${PERSISTENCE_UPLOAD_JOURNAL_TABLE:csv_uploader_upload_journal} # таблица журнала загрузок по расписанию
table-settings: ${PERSISTENCE_SETTINGS_TABLE:csv_uploader_settings} # таблица хранения настроек сервиса
storage-duration: 14d # продолжительность хранения данных в журналах
cleanup-interval: 10m # периодичность очистки данных из таблиц журналов
host: ${PS_HOST:localhost}
port: ${PS_PORT:9195}
http:
max-pool-size: ${PS_MAX_POOL_SIZE:8}
metadata: # задействовано только если prostore-rest-client.enabled: false
free-input: false # true / false разрешить свобоный ввод строки датамарта и таблицы
# datamarts: # определяет варианты к выбору датамартов и таблиц, список доступных таблиц определяется для каждого датамарта отдельно
# marketing:
# tables: [sales]
# region36:
# tables: [tickets,passengers,cars]
# способ хранения пользовательской конфигурации
persistence-mode: ${PERSISTENCE_MODE:prostore} # prostore, preferences
validation:
enabled: ${VALIDATION_ENABLE:true}
rest-uploader-url: ${REST_UPLOADER_URL:http://localhost:8081}
upload:
mandatoryFlk: ${UPLOAD_MANDATORY_FLK:false}
# Настройки парсера csv файлов
csv-parser:
# Символ разделителя значений
separator: ${CSV_PARSER_SEPARATOR:;}
# Символ кавычки
quote-char: ${CSV_PARSER_QUOTE_CHAR:"}
# Символ экранирования значений
escape-char: ${CSV_PARSER_ESCAPE_CHAR:'}
# Настройка интерпретации значений как null. Допустимые значения:
# - EMPTY_SEPARATORS - пустое значение между двумя разделителями, например ;;
# - EMPTY_QUOTES - пустые кавычки, например ;"";
# - BOTH - оба варианта
# - NEITHER - никогда. Пустая строка всегда определяется как пустая строка
field-as-null: ${CSV_PARSER_FIELD_AS_NULL:EMPTY_SEPARATORS}
metrics:
port: ${METRICS_PORT:9837}
backup:
mode: ${BACKUP_MODE:rest} # kafka | rest
rest:
uri: ${BACKUP_URI:/backup}
backupTopic: ${BACKUP_TOPIC:adapter.backup}
statusTopic: ${STATUS_TOPIC:adapter.status}
kafka:
consumer:
property:
bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost}
group.id: ${CSV_UPLOADER_BACKUP_GROUP_ID:csv_uploader_adapter_command}
auto.offset.reset: latest
producer:
property:
bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost}
3. Параметры конфигурации
Настройка конфигурации CSV-uploader осуществляется путем редактирования параметров настроек в файле application.yml.
В файле конфигурации CSV-uploader могут быть настроены следующие секции:
auth- настройки авторизации;http-server- настройки порта подключения;file-size- ограничение на размер отправляемого файла (мегабайты);environment- определяет папку для ошибочных файлов;prostore-rest-client- блок параметров конфигурирования взаимодействия с Prostore;metadata- добавление поля ввода наименования датамарта и таблицы;persistence-mode- настройка хранения пользовательской конфигурации;validation- адрес подключения модуля REST-Uploader;upload- требование токена для аутентификации в модуле REST-Uploader;csv-parser- настройка парсинга CSV;metrics- настройка получения метрик;backup- настройка бэкапирования модуля.
3.1. Секция auth
Секция auth содержит настройки авторизации.
Например:
auth:
mode: ${AUTH_MODE:DISABLED}
studio:
ui-prompt: true
datamarts:
- datamart_mnemonic: datamart25
username: user
password: passwd
organization_ogrn: ogrn
Параметры конфигурации
mode- режим аутентификации, напримерAUTH_MODE:DISABLED, доступные следующие варианты:DISABLED- аутентификация отключена;JWT- включает окно запроса JWT на странице «Загрузка» для аутентификации в REST-Uploader (ранее upload.jwt-auth);STUDIO- включает аутентификацию по логину и паролю в Datamart Platform Studio;
studio- настройки аутентификации в режиме STUDIO;ui-prompt- если выбранtrueзапрос логина и пароля на странице «Загрузка», (отдельно для каждого datamart), если выбранfalse, то используются реквизиты из блока «datamarts»;datamarts- Реквизиты для авторизации используемые на странице «Загрузка» если выбранui-prompt: false, а также при загрузке по расписанию;datamart_mnemonic- мнемоника датамарта, например:datamart_mnemonic: datamart25;username- имя пользователя, напримерusername: user;password- пароль авторизации, напримерpassword: passwd;organization_ogrn- ОГРН организации, напримерorganization_ogrn: ogrn.
3.2. Секция http-server
Секция http-server предназначена для настройки порта и протокола передачи данных (одно из значений HTTP или HTTPS).
Например:
http:
port: ${HTTP_PORT:8080}
enabled: ${HTTP_ENABLED:true}
Параметры конфигурации
port- порт для старта веб-сервера, напримерHTTP_PORT:8080;enabled- статус включения/отключения веб-сервера, напримерHTTP_ENABLED:true.
3.3. Секция file-size
Секция file-size отвечает за ограничение на размер отправляемого файла (указывется в мегабайтах).
file-size:
restriction: ${SEND_FILE_SIZE_RESTRICTION:1024}
Параметры конфигурации
restriction- ограничение на размер отправляемого файла, напримерSEND_FILE_SIZE_RESTRICTION:1024.
3.4. Секция environment
В секции environment указывается папка для ошибочных файлов.
Например:
environment:
error-folder: ${ENVIRONMENT_ERROR_FOLDER:error}
Параметры конфигурации
error-folder- папка для ошибочных файлов, напримерENVIRONMENT_ERROR_FOLDER:error.
3.5. Секция prostore-rest-client
В секции prostore-rest-client реализован блок параметров конфигурирования взаимодействия с Prostore.
Например:
prostore-rest-client:
enabled: true # true / false # выключение доступа к Prostore
persistence-datamart: ${PERSISTENCE_DATAMART:persistence}
datasource: ${PERSISTENCE_DATASOURCE:}
table-flk-journal: ${PERSISTENCE_FLK_JOURNAL_TABLE:csv_uploader_flk_journal}
table-upload-journal: ${PERSISTENCE_UPLOAD_JOURNAL_TABLE:csv_uploader_upload_journal}
table-settings: ${PERSISTENCE_SETTINGS_TABLE:csv_uploader_settings}
storage-duration: 14d
cleanup-interval: 10m
host: ${PS_HOST:localhost}
port: ${PS_PORT:9195}
http:
max-pool-size: ${PS_MAX_POOL_SIZE:8}
Параметры настроек
enabled- включение/ выключение доступа к Prostorepersistence-datamart- датамарт, в котором будут располагаться таблицы с данными сервиса, напримерPERSISTENCE_DATAMART:persistence;datasource- по умолчанию пусто, берется единственный датасорс из настроек Prostore;table-flk-journal- таблица журнала ФЛК, напримерPERSISTENCE_FLK_JOURNAL_TABLE:csv_uploader_flk_journal;table-upload-journal- таблица журнала загрузок, напримерPERSISTENCE_UPLOAD_JOURNAL_TABLE:csv_uploader_upload_journal;table-settings- таблица хранения настроек сервиса, напримерPERSISTENCE_SETTINGS_TABLE:csv_uploader_settings;storage-duration- продолжительность хранения данных в журналах, например14d, указывается в днях;cleanup-interval- периодичность очистки данных из таблиц журналов, например10m, указывается в минутах;host- адрес Prostore, напримерPS_HOST:localhost;port- порт Prostore, напримерPS_PORT:9195;max-pool-size- максимальное число подключений к Prostore, напримерPS_MAX_POOL_SIZE:8.
3.6. Секция metadata
Настройки секции metadata позволяют отображать поле ручного ввода названия датамарта и таблиц.
Задействовано только если в секции prostore-rest-client указано enabled: false
Например:
metadata:
free-input: false
# datamarts:
# marketing:
# tables: [sales]
# region36:
# tables: [tickets,passengers,cars]
Параметры конфигурации
free-input- разрешить свобоный ввод строки датамарта и таблицы, напримерfree-input: false;datamarts- определяет варианты к выбору датамартов и таблиц, список доступных таблиц определяется для каждого датамарта отдельно.
3.7. Секция persistence-mode
В секции persistence-mode указывается способ хранения пользовательской конфигурации.
Например:
persistence-mode: ${PERSISTENCE_MODE:prostore} # prostore, preferences
3.8. Секция validation
В секции validation реализован механизм настройки валидации ФЛК.
Например:
validation:
enabled: ${VALIDATION_ENABLE:true}
rest-uploader-url: ${REST_UPLOADER_URL:http://localhost:8081}
Параметры конфигурации
enabled- подключение к сервису REST-Uploader для выполнения валидации, напримерVALIDATION_ENABLE:true;rest-uploader-url- URL к сервису REST-Uploader для выполнения валидации, например{REST_UPLOADER_URL:http://localhost:8081}.
3.9. Секция upload
В секции upload реализовано включение/ отключение обязательности проверки ФЛК.
Например:
upload:
mandatoryFlk: ${UPLOAD_MANDATORY_FLK:false}
Параметры конфигурации
jmandatoryFlk- включение/ выключение обязательности ФЛК:true- проверка ФЛК выполняется всегда, изменение переключателя ФЛК веб интерфейсе заблокировано;false- необходимость проверки ФЛК задается пользователем в веб интерфейсе.
3.10. Секция csv-parser
Внимание
При загрузке файлов с форматно-логическим контролем, важно, чтобы настройки секции csv-parser должны быть синхронизированы с соответствующими настройками csvparser Prostore. Так же настройки секции csv-parser должны быть одинаковыми в модулях CSV-Uploader (если используется его UI), REST-Uploader и DATA-Uploader.
Секция csv-parser - настройка парсинга CSV.
Например:
# Настройки парсера csv файлов
csv-parser:
# Символ разделителя значений
separator: ${CSV_PARSER_SEPARATOR:;}
# Символ кавычки
quote-char: ${CSV_PARSER_QUOTE_CHAR:"}
# Символ экранирования значений
escape-char: ${CSV_PARSER_ESCAPE_CHAR:'}
# Настройка интерпретации значений как null. Допустимые значения:
# - EMPTY_SEPARATORS - пустое значение между двумя разделителями, например ;;
# - EMPTY_QUOTES - пустые кавычки, например ;"";
# - BOTH - оба варианта
# - NEITHER - никогда. Пустая строка всегда определяется как пустая строка
field-as-null: ${CSV_PARSER_FIELD_AS_NULL:EMPTY_SEPARATORS}
Параметры конфигурации
separator- Символ разделителя значений, напримерCSV_PARSER_SEPARATOR:;;quote-char- символ кавычки, напримерCSV_PARSER_QUOTE_CHAR:";escape-char- Символ экранирования значений, напримерCSV_PARSER_ESCAPE_CHAR:';Настройка интерпретации значений как null. Допустимые значения:
EMPTY_SEPARATORS- пустое значение между двумя разделителями, например ;;EMPTY_QUOTES- пустые кавычки, например ;»»;BOTH- оба варианта;NEITHER- никогда. Пустая строка всегда определяется как пустая строка.
field-as-null- способ определения null поля, напримерCSV_PARSER_FIELD_AS_NULL:EMPTY_SEPARATORS.
Дополнительное описание параметров
Параметр
CSV_PARSER_ESCAPE_CHARработает следующим образом: если символ экранирования и символ кавычки равны", то будет использован RFC4180Parser, который считывает все символы между двумя двойными кавычками, при этом двойная кавычка в тексте поля должна быть экранирована двойной кавычкой (Например"поле, ""содержащее двойную кавычку"""будет считано какполе, "содержащее двойную кавычку"). В противном случае будет использован CSVParser, использующий символ экранирования для обозначения «непечатаемых символов».Параметр
CSV_PARSER_FIELD_AS_NULLможет принимать следующие значения:EMPTY_SEPARATORS- два разделителя полей (см. csv-parser/separator) подряд считаются null. Например: строка [aaa,,ccc] содержит значения [«aaa», null, «bbb»], а строка [aaa,»»,ccc] содержит значения [«aaa», «», «bbb»].EMPTY_QUOTES- два «ограничителя строки» (см. csv-parser/escape-char) подряд считаются null. Например: строка [aaa,»»,ccc] содержит значения [«aaa», null, «bbb»], а строка [aaa,,ccc] содержит значения [«aaa», «», «bbb»].BOTH- оба варианта (см.EMPTY_SEPARATORSиEMPTY_QUOTES) считаются null. Например: обе строки [aaa,»»,ccc] и [aaa,,bbb] содержат одинаковое значение [«aaa», null, «bbb»].NEITHER- ни один из вариантов (см.EMPTY_SEPARATORSиEMPTY_QUOTES) не считается null. Например: обе строки [aaa,»»,ccc] и [aaa,,bbb] содержат одинаковое значение [«aaa», «», «bbb»].
3.11. Секция metrics
Секция metrics предназначена для настройки параметров метрик.
Например:
metrics:
port: ${METRICS_PORT:9837}
Параметры конфигурации
port- Порт для метрик, напримерMETRICS_PORT:9837.
3.12. Секция backup
Секция backup предназначена для настроек бекапирования модуля.
Например:
backup:
mode: ${BACKUP_MODE:rest} # kafka | rest
rest:
uri: ${BACKUP_URI:/backup}
backupTopic: ${BACKUP_TOPIC:adapter.backup}
statusTopic: ${STATUS_TOPIC:adapter.status}
kafka:
consumer:
property:
bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost}
group.id: ${CSV_UPLOADER_BACKUP_GROUP_ID:csv_uploader_adapter_command}
auto.offset.reset: latest
producer:
property:
bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost}
Параметры настроек
mode- режим бекапирования, напримерBACKUP_MODE:rest;uri- путь к файлу бекапирования в случае выбора REST-сервисов для режима бэкапирования;backupTopic- топик для отправки сохраненных данных, например:{BACKUP_TOPIC:adapter.backup};statusTopic- топик для отправки статусов бэкапирования, например:{STATUS_TOPIC:adapter.status}.