Release 0.11 notes
Изменения data_type_rk
Изменяются значения data_type_rk для типов данных. Необходимо учесть, если используется хардкод:
| Data type name | Old data_type_rk | New data_type_rk |
|---|---|---|
| AMOUNT | 1 | 1796623978 |
| CURRENCY | 2 | 419959694 |
| SHARE | 3 | 1681445414 |
| STRING | 4 | 1601148794 |
| BIG_INT | 5 | 1523509284 |
| FLAG | 6 | 1387904535 |
| FLOAT | 7 | 671674020 |
| INT | 8 | 890642190 |
| SMALL_INT | 9 | 315822524 |
| BIG_STRING | 10 | 1430130245 |
| DATETIME | 11 | 48934079 |
| DATE | 12 | 1157021114 |
Для всех остальных типов данных (в т.ч. новых) значение data_type_rk должно рассчитываться по следующему алгоритму:
import hashlib
data_type_name = 'new_data_type'
INT_MAX = 2**31 - 1
int(hashlib.sha256(data_type_name.encode()).hexdigest(), 16) % INT_MAX
Справочники типов данных v100 и v2 должны изменяться синхронно и полностью соответствовать друг другу.
Перенос таблицы alembic version
Если таблица alembic_version хранится в схеме public, то перед установкой релиза 0.11 необходимо выполнить следующие запросы в metastore:
CREATE TABLE meta.alembic_version (
version_num varchar(32) NOT NULL,
CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
);
INSERT INTO meta.alembic_version SELECT version_num from public.alembic_version;
DROP TABLE public.alembic_version;
Обновление справочников
Если таблица meta.ref_type_default пустая, необходимо выполнить инициализацию справочников, вызвав POST v100/admin/ref_init. Иначе необходимо учесть новые типы данных в справочнике дефолтов:
insert into meta.ref_type_default (db_name, db_type, default_fs_type, author, created_dttm, updated_dttm)
select 'postgresql', 'timestamp with time zone', 'DATETIME', '_root', current_timestamp, current_timestamp;
insert into meta.ref_type_default (db_name, db_type, default_fs_type, author, created_dttm, updated_dttm)
select 'greenplum', 'timestamp with time zone', 'DATETIME', '_root', current_timestamp, current_timestamp;
insert into meta.ref_type_default (db_name, db_type, default_fs_type, author, created_dttm, updated_dttm)
select 'postgresql', 'timestamp without time zone', 'DATETIME', '_root', current_timestamp, current_timestamp;
insert into meta.ref_type_default (db_name, db_type, default_fs_type, author, created_dttm, updated_dttm)
select 'greenplum', 'timestamp without time zone', 'DATETIME', '_root', current_timestamp, current_timestamp;
insert into meta.ref_type_default (db_name, db_type, default_fs_type, author, created_dttm, updated_dttm)
select 'postgresql', 'character varying', 'BIG_STRING', '_root', current_timestamp, current_timestamp;
insert into meta.ref_type_default (db_name, db_type, default_fs_type, author, created_dttm, updated_dttm)
select 'greenplum', 'character varying', 'BIG_STRING', '_root', current_timestamp, current_timestamp;
insert into meta.ref_type_default (db_name, db_type, default_fs_type, author, created_dttm, updated_dttm)
select 'postgresql', 'character', 'BIG_STRING', '_root', current_timestamp, current_timestamp;
insert into meta.ref_type_default (db_name, db_type, default_fs_type, author, created_dttm, updated_dttm)
select 'greenplum', 'character', 'BIG_STRING', '_root', current_timestamp, current_timestamp;
insert into meta.ref_type_default (db_name, db_type, default_fs_type, author, created_dttm, updated_dttm)
select 'postgresql', 'decimal', 'FLOAT', '_root', current_timestamp, current_timestamp;
insert into meta.ref_type_default (db_name, db_type, default_fs_type, author, created_dttm, updated_dttm)
select 'greenplum', 'decimal', 'FLOAT', '_root', current_timestamp, current_timestamp;
insert into meta.ref_type_default (db_name, db_type, default_fs_type, author, created_dttm, updated_dttm)
select 'postgresql', 'unknown', 'BIG_STRING', '_root', current_timestamp, current_timestamp;
insert into meta.ref_type_default (db_name, db_type, default_fs_type, author, created_dttm, updated_dttm)
select 'greenplum', 'unknown', 'BIG_STRING', '_root', current_timestamp, current_timestamp;
update meta.ref_type_default
set db_type = 'double precision' -- изменилось название
where db_type = 'double_precision' and db_name in ('postgresql', 'postgres');
Использование PVC в качестве хранилища кода DAG-ов
Настройка приложения axiom
-
Cоздать pvc с типом RWM
-
Примонтировать PVC в values.yaml приложения
-
Указать значения переменных окружения в axiom:
AF__DAGS_FILE_SYSTEM=pvc (если отличается от значения по умолчанию) AF__DAGS_PVC_MOUNT_PATH=/var/dags # PYTHONPATH в Airflow AF__VENV__PYTHONPATH=/opt/bitnami/airflow/dags/axiom/axiom_custom:/opt/bitnami/airflow/dags/axiom/axiom_custom/axiom # Путь до кода DAG-ов в Airflow AF__VENV__DAGS_PATH=/opt/bitnami/airflow/dags/axiom # Путь до кода tasks в Airflow AF__VENV__TASKS_PATH=/opt/bitnami/airflow/dags/axiom/axiom_custom/axiom/custom_tasks
Настройка Airflow
- Удалить секцию service.git
-
Примонтировать PVC в values.yaml Airflow
-
Указать значение переменной окружения
Настройка пула для дагов в Airflow
Для настройки пула в Airflow под даги приложения необходимо:
-
Создать пул с именем
в Airflow (Airflow UI: Admin -> Pools -> +) -
Указать имя созданного пула в переменную окружения в чарте Airflow: AXIOM_DAGS_POOL
Airflow Environment Variables (NEW)
SSL_VERIFICATION = false # Требуется ли ssl верификация для приложения. По умолчанию False.
# Возможные значения: True/False/cert_path
AXIOM_DAGS_POOL = "default_pool" # Имя пула для тасок axiom в Airflow
API Environment Variables (CHANGES)
Унифицированы имена всех переменных окружения, в частности переменные сгруппированы по секциям: Metastore, Datastore, Engine, S3, Airflow, Log, Sentry, Keycloak, Git, Rosbank (см. таблицу ниже) Все переменные типа bool и int в values файле больше нет необходимости обрамлять в кавычки. Переменные типа json должны обрамляться одинарными кавычками, например: LOG_FIELDS_REDEFINE='{"traceback": "aboba"}'.
Важно! Старые переменные, отвечающие за размер/таймаут пула - сгруппированы в DB__CONN_OPTIONS. Расширенная инструкция по конфигурации доступна в руководстве Connecting Datastore
NEW
AXIOM__CONFIG_PREFIX = '' # устанавливает префикс для всех переменных окружения
# по-умолчанию - не установлен
S3__SSL_VERIFICATION = true # Требуется ли ssl верификация. По умолчанию True
# Возможные значения: True/False/cert_path
AF__SSL_VERIFICATION = true # Требуется ли ssl верификация. По умолчанию True
# Возможные значения: True/False/cert_path
KEYCLOAK__SSL_VERIFICATION = true # Требуется ли ssl верификация. По умолчанию True
# Возможные значения: True/False/cert_path
RB__DATASOURCE_SSL_VERIFICATION = true # Требуется ли ssl верификация. По умолчанию True
# Возможные значения: True/False/cert_path
LOG_FIELDS_REDEFINE = '{}' # Переопределение имен полей в json-логе.
# Например: '{"traceback": "aboba"}' переопределит дефолтное поле traceback как aboba
AF__URL = "" # URL до Airflow (без логина и пароля)
AF__USER = "user" # user для Airflow
AF__PASSWORD = "password" # пароль для Airflow
AF__DAGS_FILE_SYSTEM = "git" # Тип хранилища для кода DAG-ов Airflow (git/pvc)
AF__DAGS_PVC_MOUNT_PATH = "/var/dags" # Путь до директории к примонтированному pvc
ENGINE__DROP_OBJECTS_BATCH_SIZE = 100 # Размер батча для метода drop_objects() при datastore reset
Metastore
| Old name | NEW name | Comment |
|---|---|---|
| META_DB_URL | META__URL | ... |
| - | META__CONN_OPTIONS | new! |
| META_POOL_SIZE | (removed) | moved to META__CONN_OPTIONS |
| META_MAX_OVERFLOW | (removed) | moved to META__CONN_OPTIONS |
| META_POOL_TIMEOUT | (removed) | moved to META__CONN_OPTIONS |
| META_SCHEMA_NM | META__SCHEMA | ... |
| - | META__WORK_SCHEMA | теперь отдельная переменная для meta |
| ROLLBACK_PASS | META__ROLLBACK_PASS | ... |
| DB_ROLLBACK_INITIAL_CSV_PATH_META | META__ROLLBACK_CSV_PATH | ... |
Datastore
| Old name | NEW name | Comment |
|---|---|---|
| DB_URL | DB__URL | ... |
| - | DB__CONN_OPTIONS | new! |
| STORE_POOL_SIZE | (removed) | moved to DB__CONN_OPTIONS |
| STORE_MAX_OVERFLOW | (removed) | moved to DB__CONN_OPTIONS |
| STORE_POOL_TIMEOUT | (removed) | moved to DB__CONN_OPTIONS |
| STAGE_SCHEMA_NM | DB__STAGE_SCHEMA | ... |
| STORE_SCHEMA_NM | DB__STORE_SCHEMA | ... |
| DATASET_SCHEMA_NM | DB__DATASET_SCHEMA | ... |
| WORK_SCHEMA_NM | DB__WORK_SCHEMA | ... |
| SANDBOX_SCHEMA_NM | (removed) | legacy |
| PLUS_INFINITY | DB__PLUS_INFINITY | ... |
| MINUS_INFINITY | DB__MINUS_INFINITY | ... |
| DB_OBJECT_NAME_LENGTH_LIMIT | DB__MAX_NAME_LENGTH | ... |
| ... | ||
| DB_ROLLBACK_INITIAL_SQL_PATH | DB__ROLLBACK_STAGE_DDL_PATH | legacy |
| DB_ROLLBACK_INITIAL_CSV_PATH_STAGE | DB__ROLLBACK_STAGE_CSV_PATH | legacy |
FS Engine
| Old name | NEW name | Comment |
|---|---|---|
| FS_ALCHEMY_TEMP_OBJECTS_AS | ENGINE__TEMP_OBJECTS_AS | ... |
| FS_ALCHEMY_ASYNC_FACTOR | ENGINE__ASYNC_FACTOR | ... |
| AXIOM_AUTO_ANALYZE | ENGINE__AUTO_ANALYZE | ... |
| AXIOM_AUTO_INDEX | ENGINE__AUTO_INDEX | ... |
| AXIOM_DISTRIBUTED_BY_OVERRIDE | ENGINE__DEFAULT_STORAGE_KEY | ... |
| AXIOM_SKIP_FEATURES_STATS | ENGINE__SKIP_FEATURES_STATS | ... |
| AXIOM_SKIP_STAT_ENTITY_COUNT | ENGINE__SKIP_STAT_ENTITY_COUNT | ... |
| ... | ||
| GREENPLUM_SESSION_OPTS | ENGINE__GREENPLUM_SESSION_OPTS | legacy, не работает, moved to ref_execution_profile |
| POSTGRES_SESSION_OPTS | ENGINE__POSTGRES_SESSION_OPTS | legacy, не работает, moved to ref_execution_profile |
S3 Storage
| Old name | NEW name | Comment |
|---|---|---|
| S3_ENABLED | S3__ENABLED | ... |
| S3_URL | S3__URL | ... |
| S3_BUCKET | S3__BUCKET | ... |
| S3_ACCESS_KEY | S3__ACCESS_KEY | ... |
| S3_SECRET_ACCESS_KEY | S3__SECRET_ACCESS_KEY | ... |
| dataset_sql_path | S3__DATASET_SQL_PATH | ... |
| dataset_csv_path | S3__DATASET_CSV_PATH | ... |
| dataset_file_limit_size_mb | S3__MAX_FILE_SIZE_MB | ... |
| dataset_buff_limit_size_mb | S3__BUFFER_SIZE_MB | ... |
| dataset_describe_timeout | S3__BUFFER_MALLOC_TIMEOUT | ... |
| dataframe_paralel_processing_count | (removed) | never used |
| s3_url_expire_interval | S3__URL_EXPIRE_INTERVAL | ... |
Airflow
| Old name | NEW name | Comment |
|---|---|---|
| AIRFLOW_URL | AF__URL | ... |
| AIRFLOW_DB_CONN | (removed) | unused |
| pipeline_id | (removed) | unused |
| constructor_id | (removed) | unused |
| dataset_csv_id | (removed) | unused |
| dataset_split_id | (removed) | unused |
| dags_factory_id | (removed) | unused |
| loader_id | AF__LOADER_ID | ... |
| dataset_delete_id | AF__DATASET_DELETE_ID | ... |
| dag_executor_id | AF__DAG_EXECUTOR_ID | ... |
| AIRFLOW_EXECUTION_MODE | AF__EXECUTION_MODE | ... |
| AXIOM_DAGS_PATH | AF__DAG_SRC_PATH | ... |
| DAG_TEMPLATE_LOCATION | AF__DAG_TEMPLATE_PATH | ... |
| DAG_POST_TIMEOUT | AF__DAG_POST_TIMEOUT | ... |
| DAG_TRIGGER_TIMEOUT | AF__DAG_TRIGGER_TIMEOUT | ... |
| DAG_TRIGGER_RETRIES | AF__DAG_TRIGGER_RETRIES | ... |
| CUSTOM_VENV_LOCATION | AF__VENV__PATH | ... |
| CUSTOM_PYTHONPATH | AF__VENV__PYTHONPATH | ... |
| SCRIPT_LOCATION | AF__VENV__DAGS_PATH | ... |
| CUSTOM_SCRIPT_LOCATION | AF__VENV__TASKS_PATH | ... |
| CUSTOM_K8S_PYTHONPATH | AF__K8S__PYTHONPATH | ... |
| K8S_TASKS_IMAGE | AF__K8S__IMAGE | ... |
| K8S_TASKS_PATH | AF__K8S__TASKS_PATH | ... |
| K8S_NAMESPACE | AF__K8S__NAMESPACE | ... |
| K8S_REGCRED | AF__K8S__REGCRED | ... |
| K8S_CONFIGMAP | AF__K8S__CONFIGMAP | ... |
| K8S_SECRET | AF__K8S__SECRET | ... |
| TASK_REQUEST_MEMORY_MB | AF__K8S__REQUEST_MEM | ... |
| TASK_LIMIT_MEMORY_MB | AF__K8S__LIMIT_MEM | ... |
| TASK_REQUEST_CPU_mCore | AF__K8S__REQUEST_CPU | ... |
| TASK_LIMIT_CPU_mCore | AF__K8S__LIMIT_CPU | ... |
| AXIOM_DAGS_PATH | (removed) | unused |
LOG
| Old name | NEW name | Comment |
|---|---|---|
| log_prefix | LOG__PREFIX | ... |
| log_type | LOG__FORMAT | ... |
| log_level | LOG__LEVEL | ... |
| log_sleep | (removed) | legacy |
| MAX_LOG_LEN | LOG__MAX_LINE_LENGTH | ... |
| LOG_FIELDS_REDEFINE | LOG__KEYS_REDEFINE | ... |
| LOG_PATH | LOG__FILE_NAME | ... |
Sentry
| Old name | NEW name | Comment |
|---|---|---|
| SENTRY_ENABLED | SENTRY__ENABLED | ... |
| SENTRY_DSN | SENTRY__DSN | ... |
Keycloak
| Old name | NEW name | Comment |
|---|---|---|
| KEYCLOAK_URL | KEYCLOAK__URL | ... |
| OPENID_POSTFIX | KEYCLOAK__OPENID_POSTFIX | ... |
| USERINFO_POSTFIX | KEYCLOAK__USERINFO_POSTFIX | ... |
| KEYCLOAK_ACCESS_ROLE | KEYCLOAK__ACCESS_ROLE | ... |
| CLIENT_ID | KEYCLOAK__CLIENT_ID | ... |
| VERIFY_TOKEN | KEYCLOAK__VERIFY_TOKEN | ... |
Git
| Old name | NEW name | Comment |
|---|---|---|
| GIT_ENABLED | GIT__ENABLED | ... |
| GIT_TYPE | GIT__AUTH_TYPE | ... |
| GIT_URL | GIT__URL | ... |
| GIT_USERNAME | GIT__USER_NAME | ... |
| GIT_USER_EMAIL | GIT__USER_EMAIL | ... |
| GIT_REPO_ID | GIT__REPO_ID | ... |
| GIT_BRANCH | GIT__BRANCH | ... |
| GIT_LOGIN | GIT__LOGIN | ... |
| GIT_PASSWORD | GIT__PASSWORD | ... |
| GIT_SSH_KEY_PATH | GIT__SSH_KEY_PATH | ... |
| GIT_SSH_KEY_PATH_INIT | GIT__SSH_KEY_PATH_INIT | ... |
| GIT_SSH_KEY_PATH_DAG | GIT__SSH_KEY_PATH_DAG | ... |
| GIT_SSH_KEY_NAME | GIT__SSH_KEY_NAME | ... |
| GIT_KEY_SECRET_NAME | GIT__SSH_KEY_SECRET | ... |
Rosbank
| Old name | NEW name | Comment |
|---|---|---|
| DATASOURCE_DAGS_ENABLED | RB__DATASOURCE_DAGS_ENABLED | ... |
| ROWNUM_ENABLED | RB__ROWNUM_ENABLED | ... |
| LOADER_ROWNUM_ENTITY_RK | RB__ROWNUM_ENTITY_RK | ... |
| CALCULATING_DENSE_DISTRIBUTION_PLOT | RB__DENSE_PLOT_ENABLED | ... |
| DISTRIBUTION_PLOT_RESULT_FILENAME | RB__DENSE_PLOT_FILENAME | ... |
| DIST_PLOT_CALCULATION_TIMEOUT | (removed) | unused |