āĻšā§āĻ¯āĻžāĻ˛ā§, āĻšāĻžāĻŦāĻ°! āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻāĻŽāĻŋ āĻŦā§āĻ¯āĻžāĻ āĻĄā§āĻāĻž āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻŋāĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻā§āĻ˛āĻŋ āĻŦāĻŋāĻāĻžāĻļā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻ¸āĻ°āĻā§āĻāĻžāĻŽ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻĨāĻž āĻŦāĻ˛āĻ¤ā§ āĻāĻžāĻ, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻāĻŋ āĻāĻ°ā§āĻĒā§āĻ°ā§āĻ DWH āĻŦāĻž āĻāĻĒāĻ¨āĻžāĻ° DataLake āĻāĻ° āĻĒāĻ°āĻŋāĻāĻžāĻ āĻžāĻŽā§āĻ¤ā§āĨ¤ āĻāĻŽāĻ°āĻž Apache Airflow āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻĨāĻž āĻŦāĻ˛āĻŦ (āĻāĻāĻ¨ āĻĨā§āĻā§ Airflow āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§)āĨ¤ āĻāĻāĻŋ āĻ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧāĻāĻžāĻŦā§ HabrÊ-āĻ āĻŽāĻ¨ā§āĻ¯ā§āĻ āĻĨā§āĻā§ āĻŦāĻā§āĻāĻŋāĻ¤, āĻāĻŦāĻ āĻŽā§āĻ˛ āĻ āĻāĻļā§ āĻāĻŽāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻŦā§āĻāĻžāĻ¨ā§āĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŦ āĻ¯ā§ āĻāĻĒāĻ¨āĻžāĻ° ETL/ELT āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻā§ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ āĻ¨ā§āĻ¤āĻ¤ āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§āĻāĻŋ āĻĻā§āĻāĻžāĻ° āĻŽā§āĻ˛ā§āĻ¯āĨ¤
āĻĒā§āĻ°ā§āĻŦā§, āĻāĻŽāĻŋ āĻ¯āĻāĻ¨ Tinkoff āĻŦā§āĻ¯āĻžāĻāĻā§ āĻāĻžāĻ āĻāĻ°āĻ¤āĻžāĻŽ āĻ¤āĻāĻ¨ āĻāĻŽāĻŋ DWH āĻŦāĻŋāĻˇāĻ¯āĻŧā§āĻ° āĻāĻĒāĻ° āĻāĻāĻāĻŋ āĻ¸āĻŋāĻ°āĻŋāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻ˛āĻŋāĻā§āĻāĻŋāĻ˛āĻžāĻŽāĨ¤ āĻāĻāĻ¨ āĻāĻŽāĻŋ Mail.Ru āĻā§āĻ°ā§āĻĒ āĻāĻŋāĻŽā§āĻ° āĻ āĻāĻļ āĻšāĻ¯āĻŧā§āĻāĻŋ āĻāĻŦāĻ āĻā§āĻŽāĻŋāĻ āĻāĻ˛āĻžāĻāĻžāĻ¯āĻŧ āĻĄā§āĻāĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻāĻŋāĨ¤ āĻĒā§āĻ°āĻā§āĻ¤āĻĒāĻā§āĻˇā§, āĻ¸āĻāĻŦāĻžāĻĻ āĻāĻŦāĻ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻā§āĻ˛āĻŋ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻĨā§ āĻāĻŽāĻžāĻ° āĻĻāĻ˛ āĻāĻŦāĻ āĻāĻŽāĻŋ āĻāĻāĻžāĻ¨ā§ āĻĄā§āĻāĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻĨāĻž āĻŦāĻ˛āĻŦāĨ¤
āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻ¨āĻž
āĻ¤ā§, āĻļā§āĻ°ā§ āĻāĻ°āĻž āĻ¯āĻžāĻāĨ¤ āĻŦāĻžāĻ¯āĻŧā§āĻĒā§āĻ°āĻŦāĻžāĻš āĻāĻŋ? āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ (āĻŦāĻž
āĻāĻāĻ¨ āĻāĻ¸ā§āĻ¨ āĻŦāĻžāĻ¯āĻŧā§āĻĒā§āĻ°āĻŦāĻžāĻšā§āĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ¸āĻ¤ā§āĻ¤āĻžāĻā§āĻ˛āĻŋ āĻĻā§āĻāĻŋāĨ¤ āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻžāĻ°āĻŽāĻ°ā§āĻŽ āĻāĻŦāĻ āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ āĻŦā§āĻāĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž, āĻāĻĒāĻ¨āĻŋ āĻ¸āĻ°ā§āĻŦā§āĻ¤ā§āĻ¤āĻŽāĻāĻžāĻŦā§ āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ° āĻ¸āĻāĻāĻ āĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ¸āĻ¤ā§āĻ¤āĻž āĻšāĻ˛ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻ¤ āĻ ā§āĻ¯āĻžāĻ¸āĻžāĻāĻā§āĻ˛āĻŋāĻ āĻā§āĻ°āĻžāĻĢ (āĻāĻ° āĻĒāĻ°ā§ DAG āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§)āĨ¤
DAG
āĻāĻāĻāĻŋ DAG āĻšāĻ˛ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻžāĻā§āĻ° āĻāĻŋāĻā§ āĻ āĻ°ā§āĻĨāĻĒā§āĻ°ā§āĻŖ āĻ¸āĻāĻ āĻ¯āĻž āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻā§ āĻ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻāĻ ā§āĻ°āĻāĻžāĻŦā§ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻā§āĻ°āĻŽāĻžāĻ¨ā§āĻ¸āĻžāĻ°ā§ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨āĨ¤ āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§ DAG āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻ¤ā§āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻāĻ¯āĻŧā§āĻŦ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§:
DAG āĻāĻ° āĻŽāĻ¤ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§:
āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°, āĻāĻāĻāĻŋ DAG āĻĄāĻŋāĻāĻžāĻāĻ¨ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ āĻĒāĻžāĻ°ā§āĻāĻ°āĻĻā§āĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻ āĻ˛ā§āĻā§āĻ¨ āĻ¯āĻžāĻ° āĻāĻĒāĻ° DAG-āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻāĻ°ā§āĻāĻāĻŋ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻ¸āĻ¤ā§āĻ¤āĻžāĻ¯āĻŧ āĻāĻ¸āĻŋ: āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§ āĻ āĻĒāĻžāĻ°ā§āĻāĻ°āĨ¤
āĻ āĻĒāĻžāĻ°ā§āĻāĻžāĻ°
āĻāĻāĻāĻŋ āĻ
āĻĒāĻžāĻ°ā§āĻāĻ° āĻšāĻ˛ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻ¸āĻ¤ā§āĻ¤āĻž āĻ¯āĻžāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋāĻ¤ā§ āĻāĻžāĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž āĻāĻāĻāĻŋ āĻāĻžāĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻā§ āĻāĻāĻŦā§ āĻ¤āĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°ā§āĨ¤
- BashOperator - āĻāĻāĻāĻŋ bash āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒāĻžāĻ°ā§āĻāĻ°āĨ¤
- PythonOperator - āĻĒāĻžāĻāĻĨāĻ¨ āĻā§āĻĄ āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒāĻžāĻ°ā§āĻāĻ°āĨ¤
- āĻāĻŽā§āĻāĻ˛ āĻ āĻĒāĻžāĻ°ā§āĻāĻ° â āĻāĻŽā§āĻ˛ āĻĒāĻžāĻ āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒāĻžāĻ°ā§āĻāĻ°āĨ¤
- HTTPOperator - HTTP āĻ āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒāĻžāĻ°ā§āĻāĻ°āĨ¤
- SqlOperator - SQL āĻā§āĻĄ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒāĻžāĻ°ā§āĻāĻ°āĨ¤
- āĻ¸ā§āĻ¨ā§āĻ¸āĻ° āĻšāĻ˛ āĻāĻāĻāĻŋ āĻāĻā§āĻ¨ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ āĻĒāĻžāĻ°ā§āĻāĻ° (āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻāĻŽāĻ¨, āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ, āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻāĻāĻāĻŋ āĻ˛āĻžāĻāĻ¨, API āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž, āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ)āĨ¤
āĻāĻ°ā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ āĻĒāĻžāĻ°ā§āĻāĻ° āĻāĻā§: DockerOperator, HiveOperator, S3FileTransferOperator, PrestoToMysqlOperator, SlackOperatorāĨ¤
āĻāĻĒāĻ¨āĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻ
āĻĒāĻžāĻ°ā§āĻāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§ āĻ¤āĻžāĻĻā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻŽāĻ°āĻž MongoDBToHiveViaHdfsTransfer, MongoDB āĻĨā§āĻā§ Hive-āĻ āĻ¨āĻĨāĻŋ āĻ°āĻĒā§āĻ¤āĻžāĻ¨āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ
āĻĒāĻžāĻ°ā§āĻāĻ° āĻāĻŦāĻ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ
āĻĒāĻžāĻ°ā§āĻāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋ
āĻāĻ° āĻĒāĻ°ā§, āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻžāĻā§āĻ° āĻĻā§āĻˇā§āĻāĻžāĻ¨ā§āĻ¤āĻā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻž āĻĻāĻ°āĻāĻžāĻ°, āĻāĻŦāĻ āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻĨāĻž āĻŦāĻ˛āĻŦāĨ¤
āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻā§
āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§ āĻāĻ° āĻāĻžāĻ¸ā§āĻ āĻļāĻŋāĻĄāĻŋāĻāĻ˛āĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§
āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒā§āĻ˛ā§āĻ° āĻ¸ā§āĻ˛āĻā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻžāĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻž āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻāĻāĻŋ DAG āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĒā§āĻ˛ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ:
ALERT_MAILS = Variable.get("gv_mail_admin_dwh")
DAG_NAME = 'dma_load'
OWNER = 'Vasya Pupkin'
DEPENDS_ON_PAST = True
EMAIL_ON_FAILURE = True
EMAIL_ON_RETRY = True
RETRIES = int(Variable.get('gv_dag_retries'))
POOL = 'dma_pool'
PRIORITY_WEIGHT = 10
start_dt = datetime.today() - timedelta(1)
start_dt = datetime(start_dt.year, start_dt.month, start_dt.day)
default_args = {
'owner': OWNER,
'depends_on_past': DEPENDS_ON_PAST,
'start_date': start_dt,
'email': ALERT_MAILS,
'email_on_failure': EMAIL_ON_FAILURE,
'email_on_retry': EMAIL_ON_RETRY,
'retries': RETRIES,
'pool': POOL,
'priority_weight': PRIORITY_WEIGHT
}
dag = DAG(DAG_NAME, default_args=default_args)
dag.doc_md = __doc__
DAG āĻ¸ā§āĻ¤āĻ°ā§ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻāĻāĻŋ āĻĒā§āĻ˛ āĻāĻžāĻ¸ā§āĻ āĻ˛ā§āĻā§āĻ˛ā§ āĻāĻāĻžāĻ°āĻ°āĻžāĻāĻĄ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž, āĻļāĻŋāĻĄāĻŋāĻāĻ˛āĻžāĻ°, āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§āĻ¤ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻžāĻā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĻāĻžāĻ¯āĻŧā§āĨ¤ āĻĒā§āĻ°āĻā§āĻ¤āĻĒāĻā§āĻˇā§, āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻ āĻāĻžāĻ°ā§āĻ¯ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŽā§āĻāĻžāĻ¨āĻŋāĻā§āĻ¸ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻžāĻ āĻāĻ°ā§āĨ¤ āĻāĻžāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻāĻā§ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ§āĻžāĻĒ āĻ
āĻ¤āĻŋāĻā§āĻ°āĻŽ āĻāĻ°ā§:
- āĻĄāĻŋāĻāĻāĻŋ-āĻ¤ā§ āĻāĻā§āĻ° āĻāĻžāĻāĻā§āĻ˛ā§ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻšāĻ¯āĻŧā§āĻā§; āĻ¨āĻ¤ā§āĻ¨ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°āĻŋāĻŦāĻĻā§āĻ§ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
- āĻ¸āĻžāĻ°āĻŋāĻāĻŋ āĻāĻžāĻā§āĻ° āĻ āĻā§āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ°ā§āĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§ āĻ¸āĻžāĻāĻžāĻ¨ā§ āĻšāĻ¯āĻŧ (āĻ āĻā§āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§), āĻāĻŦāĻ āĻ¯āĻĻāĻŋ āĻĒā§āĻ˛ā§ āĻāĻāĻāĻŋ āĻŦāĻŋāĻ¨āĻžāĻŽā§āĻ˛ā§āĻ¯ā§āĻ° āĻ¸ā§āĻ˛āĻ āĻĨāĻžāĻā§ āĻ¤āĻŦā§ āĻāĻžāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
- āĻ¯āĻĻāĻŋ āĻāĻāĻāĻŋ āĻŦāĻŋāĻ¨āĻžāĻŽā§āĻ˛ā§āĻ¯ā§ āĻāĻ°ā§āĻŽā§ āĻ¸ā§āĻ˛āĻžāĻ°āĻŋ āĻāĻā§, āĻāĻžāĻ¸ā§āĻ āĻāĻāĻŋ āĻĒāĻžāĻ āĻžāĻ¨ā§ āĻšāĻ¯āĻŧ; āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋāĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻ¯ā§ āĻāĻžāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻāĻ°ā§āĻā§āĻ¨ āĻ¤āĻž āĻāĻ āĻŦāĻž āĻ āĻ¨ā§āĻ¯ āĻ āĻĒāĻžāĻ°ā§āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧāĨ¤
āĻ¯āĻĨā§āĻˇā§āĻ āĻ¸āĻšāĻāĨ¤
āĻļāĻŋāĻĄāĻŋāĻāĻ˛āĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ DAG-āĻāĻ° āĻ¸ā§āĻā§ āĻāĻŦāĻ DAG-āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻžāĻ āĻāĻžāĻ˛āĻžāĻ¯āĻŧāĨ¤
DAG-āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, DAG-āĻā§ āĻāĻāĻāĻŋ āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻā§ āĻ¸ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§:
dag = DAG(DAG_NAME, default_args=default_args, schedule_interval='@hourly')
āĻ°ā§āĻĄāĻŋāĻŽā§āĻĄ āĻĒā§āĻ°āĻŋāĻ¸ā§āĻāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻ āĻ°āĻ¯āĻŧā§āĻā§: @once
, @hourly
, @daily
, @weekly
, @monthly
, @yearly
.
āĻāĻĒāĻ¨āĻŋ āĻā§āĻ°āĻ¨ āĻāĻā§āĻ¸āĻĒā§āĻ°ā§āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨:
dag = DAG(DAG_NAME, default_args=default_args, schedule_interval='*/10 * * * *')
āĻŽā§āĻ¤ā§āĻ¯ā§āĻĻāĻ¨ā§āĻĄ āĻ¤āĻžāĻ°āĻŋāĻ
āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§ āĻ¤āĻž āĻŦā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯, DAG-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻļāĻ¨ āĻĄā§āĻ āĻā§ āĻ¤āĻž āĻŦā§āĻāĻž āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖāĨ¤ āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§āĻ¤ā§, DAG-āĻāĻ° āĻāĻāĻāĻŋ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻļāĻ¨ āĻĄā§āĻ āĻĄāĻžāĻāĻŽā§āĻ¨āĻļāĻ¨ āĻĨāĻžāĻā§, āĻ āĻ°ā§āĻĨāĻžā§, DAG-āĻāĻ° āĻāĻžāĻā§āĻ° āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻā§āĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§, āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻļāĻ¨ āĻĄā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻ¸ā§āĻ āĻāĻ¨āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻļāĻ¨ āĻ¤āĻžāĻ°āĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻžāĻ¸ā§āĻāĻā§āĻ˛āĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ - āĻŦāĻž, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻāĻŋ āĻĄāĻŋāĻāĻāĻŋ āĻāĻāĻžāĻ§āĻŋāĻ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻļāĻ¨ āĻ¤āĻžāĻ°āĻŋāĻā§ āĻāĻāĻ āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻāĻŋ āĻāĻāĻžāĻ¨ā§ āĻ¸ā§āĻĒāĻˇā§āĻāĻāĻžāĻŦā§ āĻĻā§āĻāĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻā§:
āĻĻā§āĻ°ā§āĻāĻžāĻā§āĻ¯āĻŦāĻļāĻ¤ (āĻŦāĻž āĻ¸ā§āĻāĻžāĻā§āĻ¯āĻŦāĻļāĻ¤: āĻāĻāĻŋ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§), āĻ¯āĻĻāĻŋ āĻĄāĻŋāĻāĻāĻŋ-āĻ¤ā§ āĻāĻžāĻ¸ā§āĻā§āĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ¸āĻāĻļā§āĻ§āĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻļāĻ¨ āĻĄā§āĻā§ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻļāĻ¨āĻāĻŋ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻžāĻ¯āĻŧ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻŦā§āĨ¤ āĻāĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻŦāĻŋāĻāĻ¤ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻĄā§āĻāĻž āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻŖāĻ¨āĻž āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ āĻ¤āĻŦā§ āĻāĻāĻŋ āĻāĻžāĻ°āĻžāĻĒ, āĻ¤āĻŦā§ āĻāĻāĻŋ āĻāĻžāĻ°āĻžāĻĒ āĻāĻžāĻ°āĻŖ āĻĢāĻ˛āĻžāĻĢāĻ˛ā§āĻ° āĻĒā§āĻ¨āĻ°ā§āĻ¤ā§āĻĒāĻžāĻĻāĻ¨āĻ¯ā§āĻā§āĻ¯āĻ¤āĻž āĻšāĻžāĻ°āĻŋāĻ¯āĻŧā§ āĻā§āĻā§ (āĻ āĻŦāĻļā§āĻ¯āĻ, āĻāĻŋāĻ āĻĨā§āĻā§ āĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻĄā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻāĻŋ āĻĢā§āĻ°āĻ¤ āĻĻāĻŋāĻ¤ā§ āĻāĻŦāĻ āĻā§ āĻāĻŖāĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻā§āĻ āĻŦāĻŋāĻ°āĻā§āĻ¤ āĻāĻ°ā§ āĻ¨āĻžāĨ¤ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻāĻŦāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨, āĻ¯ā§āĻāĻžāĻŦā§ āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨)āĨ¤
āĻāĻžāĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻā§āĻā§
DAG āĻāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻšāĻ˛ āĻĒāĻžāĻāĻĨāĻ¨ā§ āĻā§āĻĄ, āĻ¤āĻžāĻ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻā§āĻĄā§āĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻāĻŽāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻāĻāĻāĻŋ āĻā§āĻŦ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻāĻĒāĻžāĻ¯āĻŧ āĻ°āĻ¯āĻŧā§āĻā§, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻļāĻžāĻ°ā§āĻĄ āĻ¸ā§āĻ°ā§āĻ¸ āĻ¸āĻšāĨ¤ āĻ§āĻ°āĻž āĻ¯āĻžāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻžāĻā§ āĻāĻāĻāĻŋ āĻā§āĻ¸ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¤āĻŋāĻ¨āĻāĻŋ MySQL āĻļāĻžāĻ°ā§āĻĄ āĻ°āĻ¯āĻŧā§āĻā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋāĻ¤ā§ āĻāĻ°ā§āĻšāĻŖ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻŋāĻā§ āĻĄā§āĻāĻž āĻ¤ā§āĻ˛āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ¤āĻžāĻāĻžāĻĄāĻŧāĻž, āĻ¸ā§āĻŦāĻžāĻ§ā§āĻ¨āĻāĻžāĻŦā§ āĻāĻŦāĻ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛āĻāĻžāĻŦā§āĨ¤ DAG-āĻ¤ā§ āĻĒāĻžāĻāĻĨāĻ¨ āĻā§āĻĄāĻāĻŋ āĻāĻāĻ°āĻāĻŽ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§:
connection_list = lv.get('connection_list')
export_profiles_sql = '''
SELECT
id,
user_id,
nickname,
gender,
{{params.shard_id}} as shard_id
FROM profiles
'''
for conn_id in connection_list:
export_profiles = SqlToHiveViaHdfsTransfer(
task_id='export_profiles_from_' + conn_id,
sql=export_profiles_sql,
hive_table='stg.profiles',
overwrite=False,
tmpdir='/data/tmp',
conn_id=conn_id,
params={'shard_id': conn_id[-1:], },
compress=None,
dag=dag
)
export_profiles.set_upstream(exec_truncate_stg)
export_profiles.set_downstream(load_profiles)
DAG āĻāĻ āĻŽāĻ¤ āĻĻā§āĻāĻžāĻ¯āĻŧ:
āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻĒāĻ¨āĻŋ āĻā§āĻŦāĻ˛ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯ āĻāĻ°ā§ āĻāĻŦāĻ DAG āĻāĻĒāĻĄā§āĻ āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻļāĻžāĻ°ā§āĻĄ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻŦāĻž āĻ¸āĻ°āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻ°āĻžāĻŽāĻĒā§āĻ°āĻĻ!
āĻāĻĒāĻ¨āĻŋ āĻāĻ°āĻ āĻāĻāĻŋāĻ˛ āĻā§āĻĄ āĻā§āĻ¨āĻžāĻ°ā§āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻāĻāĻžāĻ°ā§ āĻāĻ¤ā§āĻ¸āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°ā§āĻ¨ āĻŦāĻž āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻāĻžāĻ āĻžāĻŽā§ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°ā§āĻ¨, āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽ āĻāĻŦāĻ, DWH āĻĒāĻ°āĻŋāĻāĻžāĻ āĻžāĻŽā§āĻ° āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻā§āĻ˛āĻŋ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻžāĻ¯āĻŧ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨ āĻāĻĒāĻ¨āĻžāĻ° āĻ¸ā§āĻā§āĻ°ā§āĻā§ N āĻā§āĻŦāĻŋāĻ˛ āĻ˛ā§āĻĄ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯āĨ¤ āĻ āĻĨāĻŦāĻž, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻāĻŋ API āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻž āĻ¯āĻž āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻāĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻž āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§ āĻ¨āĻž, āĻāĻĒāĻ¨āĻŋ āĻāĻ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĨā§āĻā§ āĻāĻāĻāĻŋ DAG-āĻ¤ā§ N āĻāĻžāĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, API-āĻ āĻ āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛āĻ¤āĻžāĻā§ āĻāĻāĻāĻŋ āĻĒā§āĻ˛ā§ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ°ā§āĻ¯āĻžāĻĒ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ API āĻĨā§āĻā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¤āĻĨā§āĻ¯āĨ¤ āĻ¨āĻŽāĻ¨ā§āĻ¯āĻŧ !
āĻāĻžāĻ¨ā§āĻĄāĻžāĻ°
āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§ āĻāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻŦā§āĻ¯āĻžāĻāĻāĻ¨ā§āĻĄ āĻ°āĻŋāĻĒā§āĻāĻŋāĻāĻ°āĻŋ āĻāĻā§, āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ (āĻŽāĻžāĻāĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻŦāĻž āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻ¸ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻ¸ āĻ°āĻ¯āĻŧā§āĻā§), āĻ¯āĻž āĻāĻžāĻāĻā§āĻ˛āĻŋāĻ° āĻ āĻŦāĻ¸ā§āĻĨāĻž, āĻĄāĻŋāĻāĻāĻŋ, āĻ¸āĻāĻ¯ā§āĻ āĻ¸ā§āĻāĻŋāĻāĻ¸, āĻā§āĻ˛ā§āĻŦāĻžāĻ˛ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§āĨ¤ āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻŋ āĻŦāĻ˛āĻ¤ā§ āĻāĻžāĻ āĻ¯ā§ āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§āĻ¤ā§ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻā§āĻŦāĻ āĻ¸āĻšāĻ (āĻĒā§āĻ°āĻžāĻ¯āĻŧ 20āĻāĻŋ āĻā§āĻŦāĻŋāĻ˛) āĻāĻŦāĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻŋāĻ° āĻāĻĒāĻ°ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻā§āĻ¨ā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨āĨ¤ āĻāĻŽāĻŋ āĻāĻ¨āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻāĻŋāĻāĻž āĻ°āĻŋāĻĒā§āĻāĻŋāĻāĻ°āĻŋāĻ¤ā§ 100500 āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻāĻĨāĻž āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŋ, āĻ¯ā§āĻā§āĻ˛āĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻļā§āĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ āĻ¤āĻž āĻŦā§āĻāĻžāĻ° āĻāĻā§ āĻĻā§āĻ°ā§āĻ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤
āĻĒāĻ°ā§āĻ¯āĻŦā§āĻā§āĻˇāĻŖ
āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§āĻ° āĻ¸āĻ°āĻ˛āĻ¤āĻž āĻĻā§āĻāĻ¯āĻŧāĻž, āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻāĻžāĻ¸ā§āĻ āĻĒāĻ°ā§āĻ¯āĻŦā§āĻā§āĻˇāĻŖ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻāĨ¤ āĻāĻŽāĻ°āĻž āĻā§āĻĒā§āĻ˛āĻŋāĻ¨ā§ āĻāĻāĻāĻŋ āĻ¨ā§āĻāĻĒā§āĻ¯āĻžāĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ, āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻāĻžāĻā§āĻ° āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻĻā§āĻāĻŋ:
āĻāĻāĻŋ Airflow āĻāĻ° āĻāĻ¯āĻŧā§āĻŦ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸āĻ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§:
āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§ āĻā§āĻĄāĻāĻŋ āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸, āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž āĻā§āĻ˛āĻŋāĻā§āĻ°āĻžāĻŽā§ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž āĻ¯ā§āĻ āĻāĻ°ā§āĻāĻŋāĨ¤ āĻāĻāĻāĻŋ āĻāĻžāĻ¸ā§āĻā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻāĻ˛āĻŽāĻžāĻ¨ āĻāĻĻāĻžāĻšāĻ°āĻŖ, āĻ¯āĻĻāĻŋ āĻāĻāĻāĻŋ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻāĻā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻā§āĻ˛āĻŋāĻā§āĻ°āĻžāĻŽā§ āĻā§āĻ°ā§āĻĒāĻāĻŋāĻā§ āĻ¸ā§āĻĒā§āĻ¯āĻžāĻŽ āĻāĻ°ā§, āĻ¯ā§āĻāĻžāĻ¨ā§ āĻ¸āĻŽāĻā§āĻ° āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻāĻŦāĻ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ¤āĻž āĻĻāĻ˛ āĻĨāĻžāĻā§āĨ¤
āĻāĻŽāĻ°āĻž āĻā§āĻ˛āĻŋāĻā§āĻ°āĻžāĻŽ (āĻ¯āĻĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ) āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻāĻāĻŋ āĻ¤āĻžāĻ¤ā§āĻā§āĻˇāĻŖāĻŋāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒāĻžāĻ āĻāĻŦāĻ āĻā§āĻĒā§āĻ˛āĻŋāĻ¨ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻŽāĻ°āĻž āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§āĻ¤ā§ āĻāĻžāĻā§āĻ° āĻāĻāĻāĻŋ āĻ¸āĻžāĻŽāĻā§āĻ°āĻŋāĻ āĻāĻŋāĻ¤ā§āĻ° āĻĒāĻžāĻāĨ¤
āĻŽā§āĻā§
āĻŦāĻžāĻ¯āĻŧā§āĻĒā§āĻ°āĻŦāĻžāĻš āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻāĻāĻžāĻŦā§ āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸, āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻāĻŋ āĻĨā§āĻā§ āĻ āĻ˛ā§āĻāĻŋāĻ āĻāĻāĻ¨āĻž āĻāĻļāĻž āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻžāĻ āĻāĻ°ā§ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŦāĻ āĻĒā§āĻ°āĻā§āĻˇā§āĻāĻž āĻĻā§āĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻĨāĻžāĻā§āĻ¨āĨ¤ āĻ˛āĻā§āĻˇā§āĻ¯ āĻ āĻ°ā§āĻāĻ¨āĻ¯ā§āĻā§āĻ¯, āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻāĻ°ā§āĻ¨, āĻāĻāĻŋ āĻŽā§āĻ˛ā§āĻ¯āĻŦāĻžāĻ¨āĨ¤ āĻŦāĻŋāĻāĻžāĻļā§āĻ° āĻāĻ¤āĻŋ, āĻ¨āĻŽāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž, āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻ¸āĻšāĻāĻ¤āĻž - āĻāĻĒāĻ¨āĻŋ āĻāĻāĻŋ āĻĒāĻāĻ¨ā§āĻĻ āĻāĻ°āĻŦā§āĻ¨āĨ¤ āĻ āĻŦāĻļā§āĻ¯āĻ, āĻāĻĒāĻ¨āĻžāĻā§ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻ¸āĻāĻāĻ āĻ¨ā§āĻ° āĻĻāĻŋāĻā§ āĻ āĻ¨ā§āĻ āĻŽāĻ¨ā§āĻ¯ā§āĻ āĻĻāĻŋāĻ¤ā§ āĻšāĻŦā§, āĻŦāĻžāĻ¯āĻŧā§āĻĒā§āĻ°āĻŦāĻžāĻšā§āĻ° āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§āĻ˛āĻ¤āĻž: āĻ āĻ˛ā§āĻāĻŋāĻ āĻāĻāĻ¨āĻž āĻāĻāĻŦā§ āĻ¨āĻžāĨ¤
āĻāĻāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻĻāĻŋāĻ¨ āĻāĻžāĻ āĻāĻ°ā§ āĻĒā§āĻ°āĻžāĻ¯āĻŧ 6,5 āĻšāĻžāĻāĻžāĻ° āĻāĻžāĻ. āĻ¤āĻžāĻ°āĻž āĻāĻ°āĻŋāĻ¤ā§āĻ°ā§ āĻŦā§āĻļ āĻāĻŋāĻ¨ā§āĻ¨āĨ¤ āĻ āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻŦāĻ āĻā§āĻŦ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ¤ā§āĻ¸ āĻĨā§āĻā§ āĻŽā§āĻ˛ DWH-āĻ āĻĄā§āĻāĻž āĻ˛ā§āĻĄ āĻāĻ°āĻžāĻ° āĻāĻžāĻ āĻ°āĻ¯āĻŧā§āĻā§, āĻĒā§āĻ°āĻ§āĻžāĻ¨ DWH-āĻāĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻ¸ā§āĻā§āĻ°āĻĢā§āĻ°āĻ¨ā§āĻ āĻāĻŖāĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻžāĻ āĻ°āĻ¯āĻŧā§āĻā§, āĻāĻāĻāĻŋ āĻĻā§āĻ°ā§āĻ¤ DWH-āĻ āĻĄā§āĻāĻž āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻžāĻ° āĻāĻžāĻ āĻ°āĻ¯āĻŧā§āĻā§, āĻ āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻžāĻ āĻ°āĻ¯āĻŧā§āĻā§ - āĻāĻŦāĻ āĻŦāĻžāĻ¯āĻŧā§āĻĒā§āĻ°āĻŦāĻžāĻš āĻĻāĻŋāĻ¨ā§āĻ° āĻĒāĻ° āĻĻāĻŋāĻ¨ āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻŦ āĻāĻŋāĻŦāĻŋāĻ¯āĻŧā§. āĻ¸āĻāĻā§āĻ¯āĻžāĻ¯āĻŧ āĻāĻĨāĻž āĻŦāĻ˛āĻāĻŋ, āĻāĻ 2,3 āĻšāĻžāĻāĻžāĻ° DWH (Hadoop) āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻāĻŋāĻ˛āĻ¤āĻžāĻ° ELT āĻāĻžāĻ, āĻĒā§āĻ°āĻžāĻ¯āĻŧāĨ¤ 2,5 āĻļāĻ¤ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸ā§āĻ¤ā§āĻ°, āĻāĻāĻŋ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻĻāĻ˛ 4 ETL āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°, āĻ¯āĻž DWH-āĻ ETL āĻĄā§āĻāĻž āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻŋāĻ āĻāĻŦāĻ DWH-āĻāĻ° āĻāĻŋāĻ¤āĻ°ā§ ELT āĻĄā§āĻāĻž āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻŋāĻ-āĻ āĻŦāĻŋāĻāĻā§āĻ¤ āĻāĻŦāĻ āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻ°āĻ āĻāĻāĻāĻ¨ āĻ ā§āĻ¯āĻžāĻĄāĻŽāĻŋāĻ¨, āĻ¯āĻžāĻ°āĻž āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻĒāĻ°āĻŋāĻāĻžāĻ āĻžāĻŽā§ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻžāĻ āĻāĻ°ā§āĨ¤
āĻāĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž
āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻ¸āĻāĻā§āĻ¯āĻž āĻ āĻ¨āĻŋāĻŦāĻžāĻ°ā§āĻ¯āĻāĻžāĻŦā§ āĻŦāĻžāĻĄāĻŧāĻā§, āĻāĻŦāĻ āĻŦāĻžāĻ¯āĻŧā§āĻĒā§āĻ°āĻŦāĻžāĻšā§āĻ° āĻĒāĻ°āĻŋāĻāĻžāĻ āĻžāĻŽā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻŽāĻ°āĻž āĻ¯ā§ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻāĻžāĻāĻāĻŋ āĻāĻ°āĻŦ āĻ¤āĻž āĻšāĻ˛ āĻ¸ā§āĻā§āĻ˛āĻŋāĻāĨ¤ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ, āĻ¸ā§āĻ˛āĻžāĻ°āĻŋ āĻāĻ°ā§āĻŽā§āĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻā§āĻĄāĻŧāĻž āĻĒāĻž āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ, āĻāĻŦāĻ āĻāĻžāĻā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖā§āĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻ¸āĻš āĻāĻāĻāĻŋ āĻ¸ā§āĻŦ-āĻ¨āĻāĻ˛ āĻŽāĻžāĻĨāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻāĻžāĻā§ˇ
āĻāĻĒāĻ¸āĻāĻšāĻžāĻ°
āĻāĻāĻŋ āĻ āĻŦāĻļā§āĻ¯āĻ, āĻāĻŽāĻŋ āĻāĻ¯āĻŧāĻžāĻ°āĻĢā§āĻ˛ā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻŦāĻ˛āĻ¤ā§ āĻāĻžāĻ āĻāĻŽāĻ¨ āĻ¸āĻŦāĻāĻŋāĻā§ āĻ¨āĻ¯āĻŧ, āĻ¤āĻŦā§ āĻāĻŽāĻŋ āĻŽā§āĻ˛ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻšāĻžāĻāĻ˛āĻžāĻāĻ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻāĻŋāĨ¤ āĻāĻžāĻāĻ¯āĻŧāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻā§āĻˇā§āĻ§āĻž āĻāĻ¸ā§, āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§ āĻĻā§āĻā§āĻ¨ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻžāĻ˛ā§ āĻ˛āĻžāĻāĻŦā§ :)
āĻāĻ¤ā§āĻ¸: www.habr.com