ืึทื™ืจืคืœืึธื•ื• ืื™ื– ืึท ื’ืขืฆื™ื™ึทื’ ืคึฟืึทืจ ืงืึทื ื•ื•ื™ื ื™ืึทื ื˜ืœื™ ืื•ืŸ ื’ืขืฉื•ื•ื™ื ื“ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ืื•ืŸ ืžื™ื™ื ื˜ื™ื™ื ื™ื ื’ ืคึผืขืงืœ ื“ืึทื˜ืŸ ืคึผืจืึทืกืขืกื™ื ื’ ืคึผืจืึทืกืขืกืึทื–

ืึทื™ืจืคืœืึธื•ื• ืื™ื– ืึท ื’ืขืฆื™ื™ึทื’ ืคึฟืึทืจ ืงืึทื ื•ื•ื™ื ื™ืึทื ื˜ืœื™ ืื•ืŸ ื’ืขืฉื•ื•ื™ื ื“ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ืื•ืŸ ืžื™ื™ื ื˜ื™ื™ื ื™ื ื’ ืคึผืขืงืœ ื“ืึทื˜ืŸ ืคึผืจืึทืกืขืกื™ื ื’ ืคึผืจืึทืกืขืกืึทื–

ื”ืขืœื, ื”ืื‘ืจ! ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืื™ืš ื•ื•ื™ืœืŸ ืฆื• ืจืขื“ืŸ ื•ื•ืขื’ืŸ ืื™ื™ืŸ ื’ืจื•ื™ืก ื’ืขืฆื™ื™ึทื’ ืคึฟืึทืจ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ืคึผืขืงืœ ื“ืึทื˜ืŸ ืคึผืจืึทืกืขืกื™ื ื’ ืคึผืจืึทืกืขืกืึทื–, ืœืžืฉืœ, ืื™ืŸ ื“ื™ ื™ื ืคืจืึทืกื˜ืจืึทืงื˜ืฉืขืจ ืคื•ืŸ ืึท ืคึฟื™ืจืžืข DWH ืึธื“ืขืจ ื“ื™ื™ืŸ DataLake. ืžื™ืจ ื•ื•ืขืœืŸ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ืึทืคึผืึทื˜ืฉื™ ืึทื™ืจืคืœืึธื•ื• (ื“ืขืจื ืึธืš ืจื™ืคืขืจื“ ืฆื• ื•ื•ื™ ืึทื™ืจืคืœืึธื•ื•). ืขืก ืื™ื– ื•ืžื™ื•ื™ืฉืขืจื“ื™ืง ื“ื™ืคึผืจื™ื™ื•ื•ื“ ืคื•ืŸ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ื˜ ืื•ื™ืฃ Habrรฉ, ืื•ืŸ ืื™ืŸ ื“ืขืจ ื”ื•ื™ืคึผื˜ ื˜ื™ื™ืœ ืื™ืš ื•ื•ืขืœ ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ืื™ื‘ืขืจืฆื™ื™ื’ืŸ ืื™ืจ ืึทื– ื‘ื™ื™ึท ืžื™ื ื“ืกื˜ืขืจ ืึทื™ืจืคืœืึธื•ื• ืื™ื– ื•ื•ืขืจื˜ ืฆื• ืงื•ืงืŸ ืื™ืŸ ื•ื•ืขืŸ ื˜ืฉื•ื–ื™ื ื’ ืึท ืกืงืขื“ื–ืฉื•ืœืขืจ ืคึฟืึทืจ ื“ื™ื™ืŸ ETL / ELT ืคึผืจืึทืกืขืกืึทื–.

ื‘ื™ื– ืึทื”ืขืจ, ืื™ืš ื’ืขืฉืจื™ื‘ืŸ ืึท ืกืขืจื™ืข ืคื•ืŸ โ€‹โ€‹ืึทืจื˜ื™ืงืœืขืŸ ืื•ื™ืฃ ื“ื™ ื˜ืขืžืข ืคื•ืŸ โ€‹โ€‹DWH ื•ื•ืขืŸ ืื™ืš ื’ืขืืจื‘ืขื˜ ืื™ืŸ ื˜ื™ื ืงืึธืคืฃ ื‘ืึทื ืง. ืื™ืฆื˜ ืื™ืš ื‘ื™ืŸ ื’ืขื•ื•ืืจืŸ ืึท ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ Mail.Ru ื’ืจื•ืคืข ืžืึทื ืฉืึทืคึฟื˜ ืื•ืŸ ืื™ืš ืึทื ื˜ื•ื•ื™ืงืœืขืŸ ืึท ืคึผืœืึทื˜ืคืึธืจืžืข ืคึฟืึทืจ ื“ืึทื˜ืŸ ืึทื ืึทืœื™ืกื™ืก ืื™ืŸ ื“ื™ ื’ื™ื™ืžื™ื ื’ ื’ืขื’ื ื˜. ืึทืงื˜ื•ืึทืœืœื™, ื•ื•ื™ ื ื™ื™ึทืขืก ืื•ืŸ ื˜ืฉื™ืงืึทื•ื•ืข ืกืึทืœื•ืฉืึทื ื– ื“ืขืจืฉื™ื™ึทื ืขืŸ, ืžื™ื™ืŸ ืžืึทื ืฉืึทืคึฟื˜ ืื•ืŸ ืื™ืš ื•ื•ืขืœืŸ ืจืขื“ืŸ ื“ืึธ ื•ื•ืขื’ืŸ ืื•ื ื“ื–ืขืจ ืคึผืœืึทื˜ืคืึธืจืžืข ืคึฟืึทืจ ื“ืึทื˜ืŸ ืึทื ืึทืœื™ื˜ื™ืงืก.

ืคึผืจืึธืœืึธื’

ืึทื–ื•ื™, ืœืึธื–ืŸ ืก ืึธื ื”ื™ื™ื‘ืŸ. ื•ื•ืึธืก ืื™ื– ืึทื™ืจืคืœืึธื•ื•? ื“ืึธืก ืื™ื– ืึท ื‘ื™ื‘ืœื™ืึธื˜ืขืง (ืึธื“ืขืจ ืฉื˜ืขืœืŸ ืคื•ืŸ ืœื™ื™ื‘ืจืขืจื™ื–) ืฆื• ืึทื ื˜ื•ื•ื™ืงืœืขืŸ, ืคึผืœืึทืŸ ืื•ืŸ ืžืึธื ื™ื˜ืึธืจ ืึทืจื‘ืขื˜ ืคึผืจืึทืกืขืกืึทื–. ื“ื™ ื”ื•ื™ืคึผื˜ ืฉื˜ืจื™ืš ืคื•ืŸ ืึทื™ืจืคืœืึธื•ื•: ืคึผื™ื˜ื”ืึธืŸ ืงืึธื“ ืื™ื– ื’ืขื ื™ืฆื˜ ืฆื• ื‘ืึทืฉืจื™ื™ึทื‘ืŸ (ืึทื ื˜ื•ื•ื™ืงืœืขืŸ) ืคึผืจืึทืกืขืกืึทื–. ื“ืึธืก ื”ืื˜ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ืึทื“ื•ื•ืึทื ื˜ื™ื“ื–ืฉื™ื– ืคึฟืึทืจ ืึธืจื’ืึทื ื™ื™ื–ื™ื ื’ ื“ื™ื™ืŸ ืคึผืจื•ื™ืขืงื˜ ืื•ืŸ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’: ืื™ืŸ ืขืกืึทื ืก, ื“ื™ื™ืŸ (ืœืžืฉืœ) ETL ืคึผืจื•ื™ืขืงื˜ ืื™ื– ื‘ืœื•ื™ื– ืึท ืคึผื™ื˜ื”ืึธืŸ ืคึผืจื•ื™ืขืงื˜, ืื•ืŸ ืื™ืจ ืงืขื ืขืŸ ืึธืจื’ืึทื ื™ื–ื™ืจืŸ ืขืก ื•ื•ื™ ืื™ืจ ื•ื•ื™ืœื˜, ื’ืขื ื•ืžืขืŸ ืื™ืŸ ื—ืฉื‘ื•ืŸ ื“ื™ ืกืคึผืขืกื™ืคื™ืงืก ืคื•ืŸ ื“ื™ ื™ื ืคืจืึทืกื˜ืจืึทืงื˜ืฉืขืจ, ืžืึทื ืฉืึทืคึฟื˜ ื’ืจื™ื™ืก ืื•ืŸ ืื ื“ืขืจืข ื‘ืื“ืขืจืคืขื ื™ืฉืŸ. ื™ื ืกื˜ืจื•ืžืขื ื˜ืึทืœืœื™ ืึทืœืฅ ืื™ื– ืคึผืฉื•ื˜. ื ื™ืฆืŸ ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ PyCharm + Git. ืขืก ืื™ื– ื•ื•ื•ื ื“ืขืจืœืขืš ืื•ืŸ ื–ื™ื™ืขืจ ื‘ืึทืงื•ื•ืขื!

ืื™ืฆื˜ ืœืึธื–ืŸ ืก ืงื•ืง ืื™ืŸ ื“ื™ ื”ื•ื™ืคึผื˜ ืขื ื˜ื™ื˜ื™ื– ืคื•ืŸ Airflow. ื“ื•ืจืš ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื–ื™ื™ืขืจ ืขืกืึทื ืก ืื•ืŸ ืฆื™ืœ, ืื™ืจ ืงืขื ืขืŸ ืึธืคึผื˜ื™ืžืึทืœ ืึธืจื’ืึทื ื™ื–ื™ืจืŸ ื“ื™ื™ืŸ ืคึผืจืึธืฆืขืก ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ. ื˜ืึธืžืขืจ ื“ื™ ื”ื•ื™ืคึผื˜ ืขื ื˜ื™ื˜ื™ ืื™ื– ื“ื™ ื“ื™ืจืขืงื˜ืขื“ ืึทืกื™ืงืœื™ืง ื’ืจืึทืคื™ืง (ื“ืขืจื ืึธืš ืจื™ืคืขืจื“ ืฆื• ื•ื•ื™ DAG).

DAG

ื DAG ืื™ื– ืึท ืžื™ื ื™ื ื’ืคืึทืœ ืคืึทืจื‘ืึทื ื“ ืคื•ืŸ ื“ื™ื™ืŸ ื˜ืึทืกืงืก ื•ื•ืึธืก ืื™ืจ ื•ื•ื™ืœืŸ ืฆื• ืคืึทืจืขื ื“ื™ืงืŸ ืื™ืŸ ืึท ืฉื˜ืจืขื ื’ ื“ื™ืคื™ื™ื ื“ ืกื™ืงื•ื•ืึทื ืก ืœื•ื™ื˜ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ืคึผืœืึทืŸ. Airflow ื’ื™ื˜ ืึท ื‘ืึทืงื•ื•ืขื ื•ื•ืขื‘ ืฆื•ื‘ื™ื ื“ ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ DAGs ืื•ืŸ ืื ื“ืขืจืข ืขื ื˜ื™ื˜ื™ื–:

ืึทื™ืจืคืœืึธื•ื• ืื™ื– ืึท ื’ืขืฆื™ื™ึทื’ ืคึฟืึทืจ ืงืึทื ื•ื•ื™ื ื™ืึทื ื˜ืœื™ ืื•ืŸ ื’ืขืฉื•ื•ื™ื ื“ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ืื•ืŸ ืžื™ื™ื ื˜ื™ื™ื ื™ื ื’ ืคึผืขืงืœ ื“ืึทื˜ืŸ ืคึผืจืึทืกืขืกื™ื ื’ ืคึผืจืึทืกืขืกืึทื–

ื“ื™ DAG ืงืขืŸ ืงื•ืงืŸ ื•ื•ื™ ื“ืึธืก:

ืึทื™ืจืคืœืึธื•ื• ืื™ื– ืึท ื’ืขืฆื™ื™ึทื’ ืคึฟืึทืจ ืงืึทื ื•ื•ื™ื ื™ืึทื ื˜ืœื™ ืื•ืŸ ื’ืขืฉื•ื•ื™ื ื“ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ืื•ืŸ ืžื™ื™ื ื˜ื™ื™ื ื™ื ื’ ืคึผืขืงืœ ื“ืึทื˜ืŸ ืคึผืจืึทืกืขืกื™ื ื’ ืคึผืจืึทืกืขืกืึทื–

ื“ืขืจ ื“ืขื•ื•ืขืœืึธืคึผืขืจ, ื•ื•ืขืŸ ื“ื™ื–ื™ื™ื ื™ื ื’ ืึท DAG, ืœื™ื™ื– ืึท ื’ืึทื ื’ ืคื•ืŸ ืึธืคึผืขืจื™ื™ื˜ืขืจื– ืื•ื™ืฃ ื•ื•ืึธืก ื˜ืึทืกืงืก ืื™ืŸ ื“ื™ DAG ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื‘ื•ื™ื˜. ื“ืึธ ืžื™ืจ ืงื•ืžืขืŸ ืฆื• ืืŸ ืื ื“ืขืจ ื•ื•ื™ื›ื˜ื™ืง ืขื ื˜ื™ื˜ื™: ืึทื™ืจืคืœืึธื•ื• ืึธืคึผืขืจืึทื˜ืึธืจ.

Operators

ืึทืŸ ืึธืคึผืขืจืึทื˜ืึธืจ ืื™ื– ืึทืŸ ืขื ื˜ื™ื˜ื™ ืื•ื™ืฃ ื“ื™ ื™ืงืขืจ ืคื•ืŸ ื•ื•ืึธืก ืึทืจื‘ืขื˜ ื™ื ืกื˜ืึทื ืกื™ื– ื–ืขื ืขืŸ ื‘ืืฉืืคืŸ, ื•ื•ืึธืก ื‘ืืฉืจื™ื™ื‘ื˜ ื•ื•ืึธืก ื•ื•ืขื˜ ืคึผืึทืกื™ืจืŸ ื‘ืขืฉืึทืก ื“ื™ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืคื•ืŸ ืึท ืึทืจื‘ืขื˜ ื‘ื™ื™ึทืฉืคึผื™ืœ. ืึทื™ืจืคืœืึธื•ื• ืจื™ืœื™ืกื™ื– ืคึฟื•ืŸ GitHub ืฉื•ื™ืŸ ืึทื ื˜ื”ืึทืœื˜ืŸ ืึท ืกื›ื•ื ืคื•ืŸ ืึธืคึผืขืจื™ื™ื˜ืขืจื– ื’ืจื™ื™ื˜ ืฆื• ื ื•ืฆืŸ. ื‘ื™ื™ืฉืคื™ืœืŸ:

  • BashOperator - ืึธืคึผืขืจืึทื˜ืึธืจ ืคึฟืึทืจ ืขืงืกืึทืงื™ื•ื˜ื™ื ื’ ืึท ื‘ืึทืฉ ื‘ืึทืคึฟืขืœ.
  • PythonOperator - ืึธืคึผืขืจืึทื˜ืึธืจ ืคึฟืึทืจ ืจื•ืคืŸ ืคึผื™ื˜ื”ืึธืŸ ืงืึธื“.
  • EmailOperator - ืึธืคึผืขืจืึทื˜ืึธืจ ืคึฟืึทืจ ืฉื™ืงื˜ E- ื‘ืจื™ื•ื•.
  • ื”ื˜ื˜ืคึผืึธืคึผืขืจืึทื˜ืึธืจ - ืึธืคึผืขืจืึทื˜ืึธืจ ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ื”ื˜ื˜ืคึผ ืจื™ืงื•ื•ืขืก.
  • SqlOperator - ืึธืคึผืขืจืึทื˜ืึธืจ ืคึฟืึทืจ ืขืงืกืึทืงื™ื•ื˜ื™ื ื’ ืกืงืœ ืงืึธื“.
  • ืกืขื ืกืึธืจ ืื™ื– ืึทืŸ ืึธืคึผืขืจืึทื˜ืึธืจ ืคึฟืึทืจ ื•ื•ืืจื˜ืŸ ืคึฟืึทืจ ืึท ื’ืขืฉืขืขื ื™ืฉ (ื“ืขืจ ืึธื ืงื•ืžืขืŸ ืคื•ืŸ ื“ื™ ืคืืจืœืื ื’ื˜ ืฆื™ื™ื˜, ื“ื™ ืื•ื™ืกื–ืขืŸ ืคื•ืŸ ื“ื™ ืคืืจืœืื ื’ื˜ ื˜ืขืงืข, ืึท ืฉื•ืจื” ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก, ืึท ืขื ื˜ืคืขืจ ืคื•ืŸ ื“ื™ API, ืืื–"ื• ื•).

ืขืก ื–ืขื ืขืŸ ืžืขืจ ืกืคึผืขืฆื™ืคื™ืฉ ืึธืคึผืขืจื™ื™ื˜ืขืจื–: DockerOperator, HiveOperator, S3FileTransferOperator, PrestoToMysqlOperator, SlackOperator.

ืื™ืจ ืงืขื ื˜ ืื•ื™ืš ืึทื ื˜ื•ื•ื™ืงืœืขืŸ ืึธืคึผืขืจื™ื™ื˜ืขืจื– ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืงืขืจืึทืงื˜ืขืจื™ืกื˜ื™ืงืก ืื•ืŸ ื ื•ืฆืŸ ื–ื™ื™ ืื™ืŸ ื“ื™ื™ืŸ ืคึผืจื•ื™ืขืงื˜. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืžื™ืจ ื‘ืืฉืืคืŸ MongoDBToHiveViaHdfsTransfer, ืึทืŸ ืึธืคึผืขืจืึทื˜ืึธืจ ืคึฟืึทืจ ืขืงืกืคึผืึธืจื˜ื™ื ื’ ื“ืึธืงื•ืžืขื ื˜ืŸ ืคึฟื•ืŸ MongoDB ืฆื• Hive, ืื•ืŸ ืขื˜ืœืขื›ืข ืึธืคึผืขืจื™ื™ื˜ืขืจื– ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืงืœื™ืงืงื›ืึทื•ืก: CHLoadFromHiveOperator ืื•ืŸ CHTableLoaderOperator. ื™ืกืขื ืฉืึทืœื™, ื•ื•ื™ ื‘ืึทืœื“ ื•ื•ื™ ืึท ืคึผืจื•ื™ืขืงื˜ ืึธืคื˜ ื’ืขื ื™ืฆื˜ ืงืึธื“ ื’ืขื‘ื•ื™ื˜ ืื•ื™ืฃ ื™ืงืขืจื“ื™ืง ืกื˜ื™ื™ื˜ืžืึทื ืฅ, ืื™ืจ ืงืขื ืขืŸ ื˜ืจืึทื›ื˜ืŸ ื•ื•ืขื’ืŸ ื‘ื•ื™ืขืŸ ืขืก ืื™ืŸ ืึท ื ื™ื™ึทืข ื“ืขืจืงืœืขืจื•ื ื’. ื“ืึธืก ื•ื•ืขื˜ ืคืึทืจืคึผืึธืฉืขื˜ืขืจืŸ ื•ื•ื™ื™ึทื˜ืขืจ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’, ืื•ืŸ ืื™ืจ ื•ื•ืขื˜ ื™ืงืกืคึผืึทื ื“ ื“ื™ื™ืŸ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืคื•ืŸ ืึธืคึผืขืจื™ื™ื˜ืขืจื– ืื™ืŸ ื“ื™ ืคึผืจื•ื™ืขืงื˜.

ื•ื•ื™ื™ึทื˜ืขืจ, ืึทืœืข ื“ื™ ื™ื ืกื˜ืึทื ืกื™ื– ืคื•ืŸ ื˜ืึทืกืงืก ื“ืึทืจืคึฟืŸ ืฆื• ื–ื™ื™ืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“, ืื•ืŸ ืื™ืฆื˜ ืžื™ืจ ื•ื•ืขืœืŸ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื“ื™ ืกืงืขื“ื–ืฉื•ืœืขืจ.

ืกื˜ืฉืขื“ื•ืœืขืจ

ืึทื™ืจืคืœืึธื•ื• ืก ืึทืจื‘ืขื˜ ืกืงืขื“ื–ืฉื•ืœืขืจ ืื™ื– ื’ืขื‘ื•ื™ื˜ ืื•ื™ืฃ ืกืขืœืขืจื™. ืกืขืœื“ืขืจื™ื™ ืื™ื– ืึท ืคึผื™ื˜ื”ืึธืŸ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืึธืจื’ืึทื ื™ื–ื™ืจืŸ ืึท ืจื™ื™ ืคึผืœื•ืก ื™ื™ืกื™ื ื’ืงืจืึทื ืึทืก ืื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืคื•ืŸ ื˜ืึทืกืงืก. ืื•ื™ืฃ ื“ื™ ืึทื™ืจืคืœืึธื•ื• ื–ื™ื™ึทื˜, ืึทืœืข ื˜ืึทืกืงืก ื–ืขื ืขืŸ ืฆืขื˜ื™ื™ืœื˜ ืื™ืŸ ืคึผืึธืึธืœืก. ืคึผืึธืึธืœืก ื–ืขื ืขืŸ ื‘ืืฉืืคืŸ ืžืึทื ื™ื•ืึทืœื™. ื˜ื™ืคึผื™ืงืึทืœืœื™, ื–ื™ื™ืขืจ ืฆื™ืœ ืื™ื– ืฆื• ื‘ืึทื’ืจืขื ืขืฆืŸ ื“ื™ ื•ื•ืขืจืงืœืึธื•ื“ ืคื•ืŸ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ื™ ืžืงื•ืจ ืึธื“ืขืจ ืฆื• ื˜ื™ืคึผ ื˜ืึทืกืงืก ืื™ืŸ ื“ื™ DWH. ืคึผืึธืึธืœืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืจืื˜ืŸ ื“ื•ืจืš ื“ื™ ื•ื•ืขื‘ ืฆื•ื‘ื™ื ื“:

ืึทื™ืจืคืœืึธื•ื• ืื™ื– ืึท ื’ืขืฆื™ื™ึทื’ ืคึฟืึทืจ ืงืึทื ื•ื•ื™ื ื™ืึทื ื˜ืœื™ ืื•ืŸ ื’ืขืฉื•ื•ื™ื ื“ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ืื•ืŸ ืžื™ื™ื ื˜ื™ื™ื ื™ื ื’ ืคึผืขืงืœ ื“ืึทื˜ืŸ ืคึผืจืึทืกืขืกื™ื ื’ ืคึผืจืึทืกืขืกืึทื–

ื™ืขื“ืขืจ ื‘ืขืงืŸ ื”ืื˜ ืึท ืฉื™ืขื•ืจ ืื•ื™ืฃ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืกืœืึธืฅ. ื•ื•ืขืŸ ืงืจื™ื™ื™ื˜ื™ื ื’ ืึท 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 ืžื“ืจื’ื” ืงืขื ืขืŸ ื–ื™ื™ืŸ ืึธื•ื•ื•ืขืจืจื™ื™ื“ ืื•ื™ืฃ ื“ื™ ืึทืจื‘ืขื˜ ืžื“ืจื’ื”.
ื ื‘ืึทื–ื•ื ื“ืขืจ ืคึผืจืึธืฆืขืก, ืกื˜ืฉืขื“ื•ืœืขืจ, ืื™ื– ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ืกืงืขื“ื–ืฉื•ืœื™ื ื’ ืึทืœืข ื˜ืึทืกืงืก ืื™ืŸ ืึทื™ืจืคืœืึธื•ื•. ืึทืงื˜ื•ืึทืœืœื™, ืกื˜ืฉืขื“ื•ืœืขืจ ื“ื™ืœื– ืžื™ื˜ ืึทืœืข ื“ื™ ืžืึทืงืึทื ื™ืงืก ืคื•ืŸ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ื˜ืึทืกืงืก ืคึฟืึทืจ ื“ื•ืจื›ืคื™ืจื•ื ื’. ื“ื™ ืึทืจื‘ืขื˜ ื’ื™ื™ื˜ ื“ื•ืจืš ืขื˜ืœืขื›ืข ืกื˜ืึทื’ืขืก ืื™ื™ื“ืขืจ ื–ื™ื™ืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“:

  1. ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ื˜ืึทืกืงืก ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืื™ืŸ ื“ื™ DAG; ืึท ื ื™ื™ึทืข ืงืขื ืขืŸ ื–ื™ื™ืŸ ืงื™ื™.
  2. ื“ื™ ืจื™ื™ ืื™ื– ืื•ื™ืกื’ืขืฉื˜ืขืœื˜ ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ื“ื™ ื‘ื™ืœื›ืขืจืงื™ื™ึทื˜ ืคื•ืŸ ื˜ืึทืกืงืก (ืคึผืจื™ื™ืึธืจืึทื˜ื™ื– ืงืขื ืขืŸ ืื•ื™ืš ื–ื™ื™ืŸ ืงืึทื ื˜ืจืึธื•ืœื“), ืื•ืŸ ืื•ื™ื‘ ืขืก ืื™ื– ืึท ืคืจื™ื™ ืฉืคึผืขืœื˜ืœ ืื™ืŸ ื“ื™ ื‘ืขืงืŸ, ื“ื™ ืึทืจื‘ืขื˜ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื ื•ืžืขืŸ ืื™ืŸ ืึธืคึผืขืจืึทืฆื™ืข.
  3. ืื•ื™ื‘ ืขืก ืื™ื– ืึท ืคึฟืจื™ื™ึท ืึทืจื‘ืขื˜ืขืจ ืกืขืœื“ืขืจื™ื™, ื“ื™ ืึทืจื‘ืขื˜ ืื™ื– ื’ืขืฉื™ืงื˜ ืฆื• ืื™ื; ื“ื™ ืึทืจื‘ืขื˜ ื•ื•ืึธืก ืื™ืจ ืคึผืจืึธื•ื’ืจืึทืžื“ ืื™ืŸ ื“ืขื ืคึผืจืึธื‘ืœืขื ื”ื™ื™ื‘ื˜ ื–ื™ืš ืึธืŸ ืžื™ื˜ ืื™ื™ืŸ ืึธื“ืขืจ ืื ื“ืขืจืŸ ืึธืคึผืขืจืึทื˜ืึธืจ.

ืคึผืฉื•ื˜ ื’ืขื ื•ื’.

ืกื˜ืฉืขื“ื•ืœืขืจ ืœื•ื™ืคื˜ ืื•ื™ืฃ ื“ื™ ื’ืึทื ื’ ืคื•ืŸ ืึทืœืข DAGs ืื•ืŸ ืึทืœืข ื˜ืึทืกืงืก ืื™ืŸ DAGs.

ืคึฟืึทืจ ืกื˜ืฉืขื“ื•ืœืขืจ ืฆื• ืึธื ื”ื™ื™ื‘ืŸ ืืจื‘ืขื˜ืŸ ืžื™ื˜ DAG, ื“ื™ DAG ื“ืึทืจืฃ ืฉื˜ืขืœืŸ ืึท ืคึผืœืึทืŸ:

dag = DAG(DAG_NAME, default_args=default_args, schedule_interval='@hourly')

ืขืก ืื™ื– ืึท ืกื›ื•ื ืคื•ืŸ ืคืึทืจื˜ื™ืง ืคึผืจืขืกืขืฅ: @once, @hourly, @daily, @weekly, @monthly, @yearly.

ืื™ืจ ืงืขื ื˜ ืื•ื™ืš ื ื•ืฆืŸ Cron ืื•ื™ืกื“ืจื•ืงืŸ:

dag = DAG(DAG_NAME, default_args=default_args, schedule_interval='*/10 * * * *')

ื“ื•ืจื›ืคื™ืจื•ื ื’ ื˜ืึธื’

ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื•ื•ื™ ืึทื™ืจืคืœืึธื•ื• ืึทืจื‘ืขื˜, ืขืก ืื™ื– ื•ื•ื™ื›ื˜ื™ืง ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื•ื•ืึธืก ื“ื™ ื“ื•ืจื›ืคื™ืจื•ื ื’ ื˜ืึธื’ ืื™ื– ืคึฟืึทืจ ืึท DAG. ืื™ืŸ ืึทื™ืจืคืœืึธื•ื•, DAG ื”ืื˜ ืึทืŸ ืขืงืกืขืงื•ื˜ื™ืึธืŸ ื˜ืึธื’ ื•ื™ืกืžืขืกื˜ื•ื ื’, ื“"ื” ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ื“ื™ ืึทืจื‘ืขื˜ ืคึผืœืึทืŸ ืคื•ืŸ ื“ื™ DAG, ืึทืจื‘ืขื˜ ื™ื ืกื˜ืึทื ืกื™ื– ื–ืขื ืขืŸ ื‘ืืฉืืคืŸ ืคึฟืึทืจ ื™ืขื“ืขืจ ืขืงืกืขืงื•ื˜ื™ืึธืŸ ื˜ืึธื’. ืื•ืŸ ืคึฟืึทืจ ื™ืขื“ืขืจ ืขืงืกืขืงื•ื˜ื™ืึธืŸ ื˜ืึธื’, ื˜ืึทืกืงืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืฉื™ื™ึทืขืš-ืขืงืกืึทืงื™ื•ื˜ืึทื“ - ืึธื“ืขืจ, ืœืžืฉืœ, ืึท DAG ืงืขื ืขืŸ ืึทืจื‘ืขื˜ืŸ ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืกืœื™ ืื™ืŸ ืขื˜ืœืขื›ืข ืขืงืกืขืงื•ื˜ื™ืึธืŸ ื“ืึทื˜ืขืก. ื“ืึธืก ืื™ื– ืงืœืืจ ื’ืขื•ื•ื™ื–ืŸ ื“ืึธ:

ืึทื™ืจืคืœืึธื•ื• ืื™ื– ืึท ื’ืขืฆื™ื™ึทื’ ืคึฟืึทืจ ืงืึทื ื•ื•ื™ื ื™ืึทื ื˜ืœื™ ืื•ืŸ ื’ืขืฉื•ื•ื™ื ื“ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ืื•ืŸ ืžื™ื™ื ื˜ื™ื™ื ื™ื ื’ ืคึผืขืงืœ ื“ืึทื˜ืŸ ืคึผืจืึทืกืขืกื™ื ื’ ืคึผืจืึทืกืขืกืึทื–

ืฆื•ื ื‘ืึทื“ื•ื™ืขืจืŸ (ืึธื“ืขืจ ืืคึฟืฉืจ ื’ืœื™ืง: ืขืก ื“ืขืคึผืขื ื“ืก ืื•ื™ืฃ ื“ื™ ืกื™ื˜ื•ืึทืฆื™ืข), ืื•ื™ื‘ ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ ืึทืจื‘ืขื˜ ืื™ืŸ ื“ื™ DAG ืื™ื– ืงืขืจืขืงื˜ืึทื“, ื“ื™ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืื™ืŸ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ืขืงืกืขืงื•ื˜ื™ืึธืŸ ื˜ืึธื’ ื•ื•ืขื˜ ืคืึธืจื–ืขืฆืŸ ืžื™ื˜ ื“ื™ ืึทื“ื–ืฉืึทืกื˜ืžืึทื ืฅ. ื“ืึธืก ืื™ื– ื’ื•ื˜ ืื•ื™ื‘ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืจื™ืงืึทืœืงื™ืึทืœื™ื™ื˜ ื“ืึทื˜ืŸ ืื™ืŸ ืคืึทืจื’ืึทื ื’ืขื ื”ื™ื™ื˜ ืคึผื™ืจื™ืึทื“ื– ืžื™ื˜ ืึท ื ื™ื™ึทืข ืึทืœื’ืขืจื™ื“ืึทื, ืึธื‘ืขืจ ื“ืึธืก ืื™ื– ืฉืœืขื›ื˜ ื•ื•ื™ื™ึทืœ ื“ื™ ืจืขืคึผืจืึธื“ื•ืกื™ื‘ื™ืœื™ื˜ื™ ืคื•ืŸ ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืื™ื– ืคืึทืจืคืึทืœืŸ (ืคื•ืŸ ืงื•ืจืก, ืงื™ื™ื ืขืจ ื‘ืึทื“ืขืจื– ืื™ืจ ืฆื• ืฆื•ืจื™ืงืงื•ืžืขืŸ ื“ื™ ืคืืจืœืื ื’ื˜ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื“ื™ ืžืงื•ืจ ืงืึธื“ ืคึฟื•ืŸ Git ืื•ืŸ ืจืขื›ืขื ืขืŸ ื•ื•ืึธืก ืื™ืจ ื“ืึทืจืคึฟืŸ ืื™ื™ืŸ ืžืึธืœ, ื•ื•ื™ ืื™ืจ ื“ืึทืจืคึฟืŸ ืขืก).

ื“ื–ืฉืขื ืขืจื™ื™ื˜ื™ื ื’ ื˜ืึทืกืงืก

ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ DAG ืื™ื– ืงืึธื“ ืื™ืŸ Python, ืึทื–ื•ื™ ืžื™ืจ ื”ืึธื‘ืŸ ืึท ื–ื™ื™ืขืจ ื‘ืึทืงื•ื•ืขื ื•ื•ืขื’ ืฆื• ืจืขื“ื•ืฆื™ืจืŸ ื“ื™ ืกื•ืžืข ืคื•ืŸ โ€‹โ€‹ืงืึธื“ ื•ื•ืขืŸ ืืจื‘ืขื˜ืŸ, ืœืžืฉืœ, ืžื™ื˜ ืฉืขืจื“ ืงื•ื•ืืœืŸ. ื–ืืœ ืก ื–ืึธื’ืŸ ืื™ืจ ื”ืึธื‘ืŸ ื“ืจื™ื™ 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 ื˜ื™ืฉืŸ ืื™ืŸ ื“ื™ื™ืŸ ืกื˜ืึธืจื™ื“ื–ืฉ. ืึธื“ืขืจ, ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืึท ืึทืคึผื™ ื•ื•ืึธืก ื˜ื•ื˜ ื ื™ืฉื˜ ืฉื˜ื™ืฆืŸ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืึท ืคึผืึทืจืึทืžืขื˜ืขืจ ืื™ืŸ ื“ื™ ืคืึธืจืขื ืคื•ืŸ ืึท ืจืฉื™ืžื”, ืื™ืจ ืงืขื ืขืŸ ื“ื–ืฉืขื ืขืจื™ื™ื˜ N ื˜ืึทืกืงืก ืื™ืŸ ืึท DAG ืคึฟื•ืŸ ื“ืขืจ ืจืฉื™ืžื”, ื‘ืึทื’ืจืขื ืขืฆืŸ ื“ื™ ืคึผืึทืจืึทืœืขืœื™ื–ืึทื ืคื•ืŸ ืจื™ืงื•ื•ืขืก ืื™ืŸ ื“ื™ API ืฆื• ืึท ื‘ืขืงืŸ, ืื•ืŸ ืกืงืจืึทืคึผ ื“ื™ ื ื™ื™ื˜ื™ืง ื“ืึทื˜ืŸ ืคื•ืŸ ื“ื™ ืึทืคึผื™. ืคืœืขืงืกืึทื‘ืึทืœ!

ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™

ืึทื™ืจืคืœืึธื•ื• ื”ืื˜ ื–ื™ื™ืŸ ืื™ื™ื’ืขื ืข ื‘ืึทืงืขื ื“ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™, ืึท ื“ืึทื˜ืึทื‘ื™ื™ืก (ืงืขืŸ ื–ื™ื™ืŸ MySQL ืึธื“ืขืจ Postgres, ืžื™ืจ ื”ืึธื‘ืŸ Postgres), ื•ื•ืึธืก ืกื˜ืึธืจื– ื“ื™ ื˜ืึทืกืงืก ืกื˜ืึทืฅ, ื“ืึทื’ืก, ืงืฉืจ ืกืขื˜ื˜ื™ื ื’ืก, ื’ืœืื‘ืืœืข ื•ื•ืขืจื™ืึทื‘ืึทืœื–, ืืื–"ื• ื•. ื“ืึธ ืื™ืš ื•ื•ืึธืœื˜ ื•ื•ื™ ืื™ืš ืงืขืŸ ื–ืึธื’ืŸ ืึทื– ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื™ืŸ ืึทื™ืจืคืœืึธื•ื• ืื™ื– ื–ื™ื™ืขืจ ืคึผืฉื•ื˜ (ื•ื•ืขื’ืŸ 20 ื˜ื™ืฉืŸ) ืื•ืŸ ื‘ืึทืงื•ื•ืขื ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืœืŸ ืฆื• ื‘ื•ื™ืขืŸ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืคึผืจืึทืกืขืกืึทื– ืื•ื™ืฃ ืฉืคึผื™ืฅ. ืื™ืš ื’ืขื“ืขื ืง ื“ื™ 100500 ื˜ื™ืฉืŸ ืื™ืŸ ื“ื™ Informatica ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™, ื•ื•ืึธืก ื”ืื˜ ืฆื• ื–ื™ื™ืŸ ื’ืขืœืขืจื ื˜ ืคึฟืึทืจ ืึท ืœืึทื ื’ ืฆื™ื™ึทื˜ ืื™ื™ื“ืขืจ ืื™ืจ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื•ื•ื™ ืฆื• ื‘ื•ื™ืขืŸ ืึท ืึธื ืคึฟืจืขื’.

ืžืึธื ื™ื˜ืึธืจื™ื ื’

ื’ืขื’ืขื‘ืŸ ื“ื™ ืคึผืึทืฉื˜ืขืก ืคื•ืŸ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™, ืื™ืจ ืงืขื ืขืŸ ื‘ื•ื™ืขืŸ ืึท ืึทืจื‘ืขื˜ ืžืึธื ื™ื˜ืึธืจื™ื ื’ ืคึผืจืึธืฆืขืก ื•ื•ืึธืก ืื™ื– ื‘ืึทืงื•ื•ืขื ืคึฟืึทืจ ืื™ืจ. ืžื™ืจ ื ื•ืฆืŸ ืึท ื ืึธื˜ืขืคึผืึทื“ ืื™ืŸ Zeppelin, ื•ื•ื• ืžื™ืจ ืงื•ืงืŸ ืื™ืŸ ื“ื™ ืกื˜ืึทื˜ื•ืก ืคื•ืŸ ื˜ืึทืกืงืก:

ืึทื™ืจืคืœืึธื•ื• ืื™ื– ืึท ื’ืขืฆื™ื™ึทื’ ืคึฟืึทืจ ืงืึทื ื•ื•ื™ื ื™ืึทื ื˜ืœื™ ืื•ืŸ ื’ืขืฉื•ื•ื™ื ื“ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ืื•ืŸ ืžื™ื™ื ื˜ื™ื™ื ื™ื ื’ ืคึผืขืงืœ ื“ืึทื˜ืŸ ืคึผืจืึทืกืขืกื™ื ื’ ืคึผืจืึทืกืขืกืึทื–

ื“ืึธืก ืงืขืŸ ืื•ื™ืš ื–ื™ื™ืŸ ื“ื™ ื•ื•ืขื‘ ืฆื•ื‘ื™ื ื“ ืคื•ืŸ Airflow ื–ื™ืš:

ืึทื™ืจืคืœืึธื•ื• ืื™ื– ืึท ื’ืขืฆื™ื™ึทื’ ืคึฟืึทืจ ืงืึทื ื•ื•ื™ื ื™ืึทื ื˜ืœื™ ืื•ืŸ ื’ืขืฉื•ื•ื™ื ื“ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ืื•ืŸ ืžื™ื™ื ื˜ื™ื™ื ื™ื ื’ ืคึผืขืงืœ ื“ืึทื˜ืŸ ืคึผืจืึทืกืขืกื™ื ื’ ืคึผืจืึทืกืขืกืึทื–

ื“ื™ ืึทื™ืจืคืœืึธื•ื• ืงืึธื“ ืื™ื– ืึธืคึฟืŸ ืžืงื•ืจ, ืึทื–ื•ื™ ืžื™ืจ ื”ืึธื‘ืŸ ืฆื•ื’ืขื’ืขื‘ืŸ ืึทืœืขืจื˜ื™ื ื’ ืฆื• ื˜ืขืœืขื’ืจืึทื. ื™ืขื“ืขืจ ืคืœื™ืกื ื“ื™ืง ื‘ื™ื™ึทืฉืคึผื™ืœ ืคื•ืŸ ืึท ืึทืจื‘ืขื˜, ืื•ื™ื‘ ืึท ื˜ืขื•ืช ืึทืงืขืจื–, ืกืคึผืึทืžืก ื“ื™ ื’ืจื•ืคึผืข ืื™ืŸ ื˜ืขืœืขื’ืจืึทื, ื•ื•ื• ื“ื™ ื’ืื ืฆืข ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืื•ืŸ ืฉื˜ื™ืฆืŸ ืžืึทื ืฉืึทืคึฟื˜ ื‘ืืฉื˜ื™ื™ื˜.

ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ ืึท ืคึผื™ื ื˜ืœืขืš ืขื ื˜ืคืขืจ ื“ื•ืจืš ื˜ืขืœืขื’ืจืึทื (ืื•ื™ื‘ ืคืืจืœืื ื’ื˜), ืื•ืŸ ื“ื•ืจืš Zeppelin ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ ืึท ืงื•ื™ืœืขืœื“ื™ืง ื‘ื™ืœื“ ืคื•ืŸ ื˜ืึทืกืงืก ืื™ืŸ ืึทื™ืจืคืœืึธื•ื•.

ืื™ืŸ ื’ืึทื ืฅ

ืึทื™ืจืคืœืึธื•ื• ืื™ื– ื‘ืคึฟืจื˜ ืึธืคึฟืŸ ืžืงื•ืจ, ืื•ืŸ ืื™ืจ ื–ืึธืœ ื ื™ืฉื˜ ื“ืขืจื•ื•ืึทืจื˜ืŸ ืžื™ืจืึทืงืึทืœื– ืคื•ืŸ ืขืก. ื–ื™ื™ืŸ ืฆื•ื’ืขื’ืจื™ื™ื˜ ืฆื• ืฉื˜ืขืœืŸ ื“ื™ ืฆื™ื™ื˜ ืื•ืŸ ืžื™ ืฆื• ื‘ื•ื™ืขืŸ ืึท ืœื™ื™ื–ื•ื ื’ ื•ื•ืึธืก ืึทืจื‘ืขื˜. ื“ืขืจ ืฆื™ืœ ืื™ื– ืึทื˜ืฉื™ื•ื•ืึทื‘ืึทืœ, ื’ืœื•ื™ื‘ืŸ ืžื™ืจ, ืขืก ืื™ื– ื•ื•ืขืจื˜ ืขืก. ื’ื™ื›ืงื™ื™ึทื˜ ืคื•ืŸ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’, ื‘ื™ื™ื’ื™ืงื™ื™ึทื˜, ื™ื– ืคื•ืŸ ืึทื“ื™ื ื’ ื ื™ื™ึท ืคึผืจืึทืกืขืกืึทื– - ืื™ืจ ื•ื•ืขื˜ ื•ื•ื™ ืขืก. ืคื•ืŸ ืงื•ืจืก, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื‘ืึทืฆืึธืœืŸ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ึทื˜ ืฆื• ื“ืขืจ ืึธืจื’ืึทื ื™ื–ืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืคึผืจื•ื™ืขืงื˜, ื“ื™ ืคืขืกื˜ืงื™ื™ึทื˜ ืคื•ืŸ ื“ื™ ืึทื™ืจืคืœืึธื•ื• ื–ื™ืš: ืžื™ืจืึทืงืึทืœื– ื˜ืึธืŸ ื ื™ื˜ ืคึผืึทืกื™ืจืŸ.

ืื™ืฆื˜ ืžื™ืจ ื”ืึธื‘ืŸ ืึทื™ืจืคืœืึธื•ื• ืืจื‘ืขื˜ืŸ ื˜ืขื’ืœืขืš ื•ื•ืขื’ืŸ 6,5 ื˜ื•ื™ื–ื ื˜ ื˜ืึทืกืงืก. ื–ื™ื™ ื–ืขื ืขืŸ ื’ืึทื ืฅ ืึทื ื“ืขืจืฉ ืื™ืŸ ื›ืึทืจืึทืงื˜ืขืจ. ืขืก ื–ืขื ืขืŸ ื˜ืึทืกืงืก ืคื•ืŸ ืœืึธื•ื“ื™ื ื’ ื“ืึทื˜ืŸ ืื™ืŸ ื“ื™ ื”ื•ื™ืคึผื˜ DWH ืคึฟื•ืŸ ืคื™ืœืข ืคืึทืจืฉื™ื“ืขื ืข ืื•ืŸ ื–ื™ื™ืขืจ ืกืคึผืขืฆื™ืคื™ืฉ ืงื•ื•ืืœืŸ, ืขืก ื–ืขื ืขืŸ ื˜ืึทืกืงืก ืคื•ืŸ ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื ื’ ืกื˜ืึธืจืคืจืึทื ืฅ ืื™ืŸ ื“ื™ ื”ื•ื™ืคึผื˜ DWH, ืขืก ื–ืขื ืขืŸ ื˜ืึทืกืงืก ืคื•ืŸ ืืจื•ื™ืกื’ืขื‘ืŸ ื“ืึทื˜ืŸ ืื™ืŸ ืึท ืฉื ืขืœ DWH, ืขืก ื–ืขื ืขืŸ ืคื™ืœืข, ืคื™ืœืข ืคืึทืจืฉื™ื“ืขื ืข ื˜ืึทืกืงืก - ืื•ืŸ Airflow. ื˜ืฉื•ื– ื–ื™ื™ ืึทืœืข ืึทืจื•ื™ืฃ ื˜ืึธื’ ื ืึธืš ื˜ืึธื’. ื’ืขืจืขื“ื˜ ืื™ืŸ ื ื•ืžืขืจืŸ, ื“ืึธืก ืื™ื– 2,3 ื˜ื•ื™ื–ื ื˜ ELT ื˜ืึทืกืงืก ืคื•ืŸ ื•ื•ืขืจื™ื™ื ื’ ืงืึทืžืคึผืœืขืงืกื™ื˜ื™ ืื™ืŸ DWH (Hadoop), ื‘ืขืขืจืขืš. 2,5 ื”ื•ื ื“ืขืจื˜ ื“ืึทื˜ืึทื‘ื™ื™ืกื™ื– ืžืงื•ืจื™ื, ื“ืึธืก ืื™ื– ืึท ืงืึธืœืขืงื˜ื™ื•ื• ืคึฟื•ืŸ 4 ETL ื“ืขื•ื•ืขืœืึธืคึผืขืจืก, ื•ื•ืึธืก ื–ืขื ืขืŸ ืฆืขื˜ื™ื™ืœื˜ ืื™ืŸ ETL ื“ืึทื˜ืŸ ืคึผืจืึทืกืขืกื™ื ื’ ืื™ืŸ DWH ืื•ืŸ ELT ื“ืึทื˜ืŸ ืคึผืจืึทืกืขืกื™ื ื’ ืื™ืŸ DWH ืื•ืŸ ื“ืึธืš ืžืขืจ ืื™ื™ืŸ ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ, ื•ื•ืืก ื“ื™ืœื– ืžื™ื˜ ื“ื™ ื™ื ืคืจืึทืกื˜ืจืึทืงื˜ืฉืขืจ ืคื•ืŸ ื“ื™ ื“ื™ื ืกื˜.

ืคึผืœืึทื ืก ืคึฟืึทืจ ื“ื™ ืฆื•ืงื•ื ืคึฟื˜

ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืคึผืจืึทืกืขืกืึทื– ืื™ื– ื™ื ืขื•ื•ืึทื˜ืึทื‘ืœื™ ื’ืจืึธื•ื™ื ื’, ืื•ืŸ ื“ื™ ื”ื•ื™ืคึผื˜ ื–ืึทืš ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ื˜ืึธืŸ ืื™ืŸ ื˜ืขืจืžื™ื ืขืŸ ืคื•ืŸ ื“ื™ ืึทื™ืจืคืœืึธื•ื• ื™ื ืคืจืึทืกื˜ืจืึทืงื˜ืฉืขืจ ืื™ื– ืกืงื™ื™ืœื™ื ื’. ืžื™ืจ ื•ื•ื™ืœืŸ ืฆื• ื‘ื•ื™ืขืŸ ืึท ืึทื™ืจืคืœืึธื•ื• ืงื ื•ื™ืœ, ืึทืœืึทืงื™ื™ื˜ ืึท ืคึผืึธืจ ืคื•ืŸ ืœืขื’ืก ืคึฟืึทืจ ืกืขืœื“ืขืจื™ื™ ื˜ื•ืขืจืก, ืื•ืŸ ืžืึทื›ืŸ ืึท ื–ื™ืš-ื“ื•ืคึผืœื™ืงื™ื™ื˜ื™ื ื’ ืงืึธืคึผ ืžื™ื˜ ืึทืจื‘ืขื˜ ืกืงืขื“ื–ืฉื•ืœื™ื ื’ ืคึผืจืึทืกืขืกืึทื– ืื•ืŸ ืึท ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™.

ืขืคึผื™ืœืึธื’

ื“ืึธืก, ืคื•ืŸ ืงื•ืจืก, ืื™ื– ื ื™ืฉื˜ ืึทืœืฅ ื•ื•ืึธืก ืื™ืš ื•ื•ืึธืœื˜ ื•ื•ื™ ืฆื• ื–ืึธื’ืŸ ื•ื•ืขื’ืŸ ืึทื™ืจืคืœืึธื•ื•, ืึธื‘ืขืจ ืื™ืš ื’ืขืคืจื•ื•ื•ื˜ ืฆื• ื”ื•ื™ื›ืคึผื•ื ืงื˜ ื“ื™ ื”ื•ื™ืคึผื˜ ืคื•ื ืงื˜ืŸ. ืึทืคึผืขื˜ื™ื˜ ืงื•ืžื˜ ืžื™ื˜ ืขืกืŸ, ืคึผืจื•ื‘ื™ืจืŸ ืขืก ืื•ืŸ ืื™ืจ ื•ื•ืขื˜ ื•ื•ื™ ืขืก :)

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’