เชเชฐเชซเซเชฒเซ‹ เช เชฌเซ‡เชš เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ‡ เช…เชจเซเช•เซ‚เชณ เช…เชจเซ‡ เชเชกเชชเชฅเซ€ เชตเชฟเช•เชธเชพเชตเชตเชพ เช…เชจเซ‡ เชœเชพเชณเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซเช‚ เชเช• เชธเชพเชงเชจ เช›เซ‡

เชเชฐเชซเซเชฒเซ‹ เช เชฌเซ‡เชš เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ‡ เช…เชจเซเช•เซ‚เชณ เช…เชจเซ‡ เชเชกเชชเชฅเซ€ เชตเชฟเช•เชธเชพเชตเชตเชพ เช…เชจเซ‡ เชœเชพเชณเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซเช‚ เชเช• เชธเชพเชงเชจ เช›เซ‡

เชนเซ‡เชฒเซ‹, เชนเซ‡เชฌเซเชฐ! เช† เชฒเซ‡เช–เชฎเชพเช‚ เชนเซเช‚ เชฌเซ‡เชš เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชตเชฟเช•เชธเชพเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชเช• เชฎเชนเชพเชจ เชธเชพเชงเชจ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช•เซ‹เชฐเซเชชเซ‹เชฐเซ‡เชŸ DWH เช…เชฅเชตเชพ เชคเชฎเชพเชฐเชพ เชกเซ‡เชŸเชพเชฒเซ‡เช•เชจเชพ เช‡เชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐเชฎเชพเช‚. เช…เชฎเซ‡ เช…เชชเชพเชšเซ‡ เชเชฐเชซเซเชฒเซ‹ (เชคเซเชฏเชพเชฐเชฌเชพเชฆ เชเชฐเชซเซเชฒเซ‹ เชคเชฐเซ€เช•เซ‡ เช“เชณเช–เชพเชฏ เช›เซ‡) เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เชถเซเช‚. เชคเซ‡ Habrรฉ เชชเชฐ เชงเซเชฏเชพเชจเชฅเซ€ เช…เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เชตเช‚เชšเชฟเชค เช›เซ‡, เช…เชจเซ‡ เชฎเซเช–เซเชฏ เชญเชพเช—เชฎเชพเช‚ เชนเซเช‚ เชคเชฎเชจเซ‡ เช–เชพเชคเชฐเซ€ เช†เชชเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชคเซเชจ เช•เชฐเซ€เชถ เช•เซ‡ เชคเชฎเชพเชฐเซ€ ETL/ELT เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชฎเชพเชŸเซ‡ เชถเซ‡เชกเซเชฏเซ‚เชฒเชฐ เชชเชธเช‚เชฆ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เชเชฐเชซเซเชฒเซ‹ เชœเซ‹เชตเชพ เชฏเซ‹เช—เซเชฏ เช›เซ‡.

เช…เช—เชพเช‰, เชœเซเชฏเชพเชฐเซ‡ เชฎเซ‡เช‚ Tinkoff เชฌเซ‡เช‚เช•เชฎเชพเช‚ เช•เชพเชฎ เช•เชฐเซเชฏเซเช‚ เชคเซเชฏเชพเชฐเซ‡ เชฎเซ‡เช‚ DWH เชตเชฟเชทเชฏ เชชเชฐ เชถเซเชฐเซ‡เชฃเซ€เชฌเชฆเซเชง เชฒเซ‡เช–เซ‹ เชฒเช–เซเชฏเชพ เชนเชคเชพ. เชนเชตเซ‡ เชนเซเช‚ Mail.Ru เช—เซเชฐเซ‚เชช เชŸเซ€เชฎเชจเซ‹ เชญเชพเช— เชฌเชจเซ€ เช—เชฏเซ‹ เช›เซเช‚ เช…เชจเซ‡ เช—เซ‡เชฎเชฟเช‚เช— เช•เซเชทเซ‡เชคเซเชฐเชฎเชพเช‚ เชกเซ‡เชŸเชพ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชฎเชพเชŸเซ‡ เชเช• เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชตเชฟเช•เชธเชพเชตเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚. เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เชœเซ‡เชฎ เชœเซ‡เชฎ เชธเชฎเชพเชšเชพเชฐ เช…เชจเซ‡ เชฐเชธเชชเซเชฐเชฆ เช‰เช•เซ‡เชฒเซ‹ เชฆเซ‡เช–เชพเชฏ เช›เซ‡, เชคเซ‡เชฎ เชคเซ‡เชฎ เชฎเชพเชฐเซ€ เชŸเซ€เชฎ เช…เชจเซ‡ เชนเซเช‚ เชกเซ‡เชŸเชพ เชเชจเชพเชฒเชฟเชŸเชฟเช•เซเชธ เชฎเชพเชŸเซ‡เชจเชพ เช…เชฎเชพเชฐเชพ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชตเชฟเชถเซ‡ เช…เชนเซ€เช‚ เชตเชพเชค เช•เชฐเซ€เชถเซเช‚.

เชชเซเชฐเชธเซเชคเชพเชตเชจเชพ

เชคเซ‹, เชšเชพเชฒเซ‹ เชถเชฐเซ‚ เช•เชฐเซ€เช. เชเชฐเชซเซเชฒเซ‹ เชถเซเช‚ เช›เซ‡? เช† เชเช• เชชเซเชธเซเชคเช•เชพเชฒเชฏ เช›เซ‡ (เช…เชฅเชตเชพ เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹เชจเซ‹ เชธเชฎเซ‚เชน) เช•เชพเชฐเซเชฏ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชตเชฟเช•เชธเชพเชตเชตเชพ, เชฏเซ‹เชœเชจเชพ เชฌเชจเชพเชตเชตเชพ เช…เชจเซ‡ เชคเซ‡เชจเซเช‚ เชจเชฟเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเซเช‚. เชเชฐเชซเซเชฒเซ‹เชจเซเช‚ เชฎเซเช–เซเชฏ เชฒเช•เซเชทเชฃ: เชชเชพเชฏเชฅเซ‹เชจ เช•เซ‹เชก เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซเช‚ เชตเชฐเซเชฃเชจ (เชตเชฟเช•เชพเชธ) เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡. เชคเชฎเชพเชฐเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช…เชจเซ‡ เชตเชฟเช•เชพเชธเชจเซ‡ เช—เซ‹เช เชตเชตเชพ เชฎเชพเชŸเซ‡ เช†เชจเชพ เช˜เชฃเชพ เชซเชพเชฏเชฆเชพ เช›เซ‡: เชธเชพเชฐเชฎเชพเช‚, เชคเชฎเชพเชฐเซ‹ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡) ETL เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฎเชพเชคเซเชฐ เชเช• เชชเชพเชฏเชฅเซ‹เชจ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช›เซ‡, เช…เชจเซ‡ เชคเชฎเซ‡ เชˆเชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐเชจเซ€ เชตเชฟเชถเชฟเชทเซเชŸเชคเชพเช“, เชŸเซ€เชฎเชจเชพ เช•เชฆ เช…เชจเซ‡ เช…เชจเซเชฏ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹. เช‡เชจเซเชธเซเชŸเซเชฐเซเชฎเซ‡เชจเซเชŸเชฒเซ€ เชฌเชงเซเช‚ เชธเชฐเชณ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ PyCharm + Git เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹. เชคเซ‡ เช…เชฆเซเชญเซเชค เช…เชจเซ‡ เช–เซ‚เชฌ เช…เชจเซเช•เซ‚เชณ เช›เซ‡!

เชนเชตเซ‡ เชšเชพเชฒเซ‹ เชเชฐเชซเซเชฒเซ‹เชจเซ€ เชฎเซเช–เซเชฏ เชธเช‚เชธเซเชฅเชพเช“ เชœเซ‹เชˆเช. เชคเซ‡เชฎเชจเชพ เชธเชพเชฐ เช…เชจเซ‡ เชนเซ‡เชคเซเชจเซ‡ เชธเชฎเชœเซ€เชจเซ‡, เชคเชฎเซ‡ เชคเชฎเชพเชฐเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชจเซ‡ เชถเซเชฐเซ‡เชทเซเช  เชฐเซ€เชคเซ‡ เช—เซ‹เช เชตเซ€ เชถเช•เซ‹ เช›เซ‹. เช•เชฆเชพเชš เชฎเซเช–เซเชฏ เชเชจเซเชŸเชฟเชŸเซ€ เชกเชพเชฏเชฐเซ‡เช•เซเชŸเซ‡เชก เชเชธเชพเชฏเช•เซเชฒเชฟเช• เช—เซเชฐเชพเชซ เช›เซ‡ (เชคเซเชฏเชพเชฐเชฌเชพเชฆ DAG เชคเชฐเซ€เช•เซ‡ เช“เชณเช–เชพเชฏ เช›เซ‡).

เชกเซ…เช—

DAG เช เชคเชฎเชพเชฐเชพ เช•เชพเชฐเซเชฏเซ‹เชจเซเช‚ เช…เชฎเซเช• เช…เชฐเซเชฅเชชเซ‚เชฐเซเชฃ เชœเซ‹เชกเชพเชฃ เช›เซ‡ เชœเซ‡เชจเซ‡ เชคเชฎเซ‡ เชšเซ‹เช•เซเช•เชธ เชถเซ‡เชกเซเชฏเซ‚เชฒ เช…เชจเซเชธเชพเชฐ เชธเช–เชค เชฐเซ€เชคเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เซเชฐเชฎเชฎเชพเช‚ เชชเซ‚เชฐเซเชฃ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ‹ เช›เซ‹. เชเชฐเชซเซเชฒเซ‹ DAGs เช…เชจเซ‡ เช…เชจเซเชฏ เชธเช‚เชธเซเชฅเชพเช“ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เชจเซเช•เซ‚เชณ เชตเซ‡เชฌ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡:

เชเชฐเชซเซเชฒเซ‹ เช เชฌเซ‡เชš เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ‡ เช…เชจเซเช•เซ‚เชณ เช…เชจเซ‡ เชเชกเชชเชฅเซ€ เชตเชฟเช•เชธเชพเชตเชตเชพ เช…เชจเซ‡ เชœเชพเชณเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซเช‚ เชเช• เชธเชพเชงเชจ เช›เซ‡

DAG เช†เชจเชพ เชœเซ‡เชตเซเช‚ เชฆเซ‡เช–เชพเชˆ เชถเช•เซ‡ เช›เซ‡:

เชเชฐเชซเซเชฒเซ‹ เช เชฌเซ‡เชš เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ‡ เช…เชจเซเช•เซ‚เชณ เช…เชจเซ‡ เชเชกเชชเชฅเซ€ เชตเชฟเช•เชธเชพเชตเชตเชพ เช…เชจเซ‡ เชœเชพเชณเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซเช‚ เชเช• เชธเชพเชงเชจ เช›เซ‡

เชกเซ‡เชตเชฒเชชเชฐ, เชœเซเชฏเชพเชฐเซ‡ เชกเซ€เชเชœเซ€ เชกเชฟเชเชพเช‡เชจ เช•เชฐเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เช“เชชเชฐเซ‡เชŸเชฐเซเชธเชจเซ‹ เชเช• เชธเซ‡เชŸ เชฎเซ‚เช•เซ‡ เช›เซ‡ เชœเซ‡เชจเชพ เชชเชฐ เชกเซ€เชเชœเซ€เชจเซ€ เช…เช‚เชฆเชฐเชจเชพ เช•เชพเชฐเซเชฏเซ‹ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เช…เชนเซ€เช‚ เช†เชชเชฃเซ‡ เชฌเซ€เชœเซ€ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชธเช‚เชธเซเชฅเชพ เชชเชฐ เช†เชตเซ€เช เช›เซ€เช: เชเชฐเชซเซเชฒเซ‹ เช“เชชเชฐเซ‡เชŸเชฐ.

เช“เชชเชฐเซ‡เชŸเชฐเซ‹

เช‘เชชเชฐเซ‡เชŸเชฐ เช เชเช• เชเชจเซเชŸเชฟเชŸเซ€ เช›เซ‡ เชœเซ‡เชจเชพ เช†เชงเชพเชฐเซ‡ เชœเซ‹เชฌเชจเชพ เชฆเชพเช–เชฒเชพ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ เชตเชฐเซเชฃเชตเซ‡ เช›เซ‡ เช•เซ‡ เชจเซ‹เช•เชฐเซ€เชจเชพ เชฆเชพเช–เชฒเชพเชจเชพ เช…เชฎเชฒ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชถเซเช‚ เชฅเชถเซ‡. GitHub เชฎเชพเช‚เชฅเซ€ เชเชฐเชซเซเชฒเซ‹ เชฐเชฟเชฒเซ€เช เชฅเชพเชฏ เช›เซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เช“เชชเชฐเซ‡เชŸเชฐเซเชธเชจเซ‹ เชธเชฎเซ‚เชน เชงเชฐเชพเชตเซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃเซ‹:

  • BashOperator - bash เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช“เชชเชฐเซ‡เชŸเชฐ.
  • PythonOperator - Python เช•เซ‹เชก เช•เซ‰เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช“เชชเชฐเซ‡เชŸเชฐ.
  • เชˆเชฎเซ‡เชฒ เช“เชชเชฐเซ‡เชŸเชฐ โ€” เชˆเชฎเซ‡เชฒ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡ เช“เชชเชฐเซ‡เชŸเชฐ.
  • HTTPOperator - HTTP เชตเชฟเชจเช‚เชคเซ€เช“ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช“เชชเชฐเซ‡เชŸเชฐ.
  • SqlOperator - SQL เช•เซ‹เชก เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช“เชชเชฐเซ‡เชŸเชฐ.
  • เชธเซ‡เชจเซเชธเชฐ เช เช‡เชตเซ‡เชจเซเชŸเชจเซ€ เชฐเชพเชน เชœเซ‹เชตเชพ เชฎเชพเชŸเซ‡ เช“เชชเชฐเซ‡เชŸเชฐ เช›เซ‡ (เชœเชฐเซ‚เชฐเซ€ เชธเชฎเชฏเชจเซเช‚ เช†เช—เชฎเชจ, เชœเชฐเซ‚เชฐเซ€ เชซเชพเช‡เชฒเชจเซ‹ เชฆเซ‡เช–เชพเชต, เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เชเช• เชฒเชพเช‡เชจ, 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 เช…เชจเซ‡ 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 เชเช• เชธเชพเชฅเซ‡ เช…เชจเซ‡เช• เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เชคเชพเชฐเซ€เช–เซ‹เชฎเชพเช‚ เช•เชพเชฎ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เช† เช…เชนเซ€เช‚ เชธเซเชชเชทเซเชŸ เชฐเซ€เชคเซ‡ เชฌเชคเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡:

เชเชฐเชซเซเชฒเซ‹ เช เชฌเซ‡เชš เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ‡ เช…เชจเซเช•เซ‚เชณ เช…เชจเซ‡ เชเชกเชชเชฅเซ€ เชตเชฟเช•เชธเชพเชตเชตเชพ เช…เชจเซ‡ เชœเชพเชณเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซเช‚ เชเช• เชธเชพเชงเชจ เช›เซ‡

เช•เชฎเชจเชธเซ€เชฌเซ‡ (เช…เชฅเชตเชพ เช•เชฆเชพเชš เชธเชฆเชญเชพเช—เซเชฏเซ‡: โ€‹โ€‹เชคเซ‡ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡), เชœเซ‹ DAG เชฎเชพเช‚ เช•เชพเชฐเซเชฏเชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃเชฎเชพเช‚ เชธเซเชงเชพเชฐเซ‹ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡, เชคเซ‹ เช…เช—เชพเช‰เชจเซ€ เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เชคเชพเชฐเซ€เช–เชฎเชพเช‚ เช…เชฎเชฒเซ€เช•เชฐเชฃ เช—เซ‹เช เชตเชฃเซ‹เชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเชˆเชจเซ‡ เช†เช—เชณ เชตเชงเชถเซ‡. เชœเซ‹ เชคเชฎเชพเชฐเซ‡ เชจเชตเชพ เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเชพเช›เชฒเชพ เชธเชฎเชฏเช—เชพเชณเชพเชฎเชพเช‚ เชกเซ‡เชŸเชพเชจเซ€ เชชเซเชจเชƒเช—เชฃเชคเชฐเซ€ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เชคเซ‹ เช† เชธเชพเชฐเซเช‚ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เช–เชฐเชพเชฌ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชชเชฐเชฟเชฃเชพเชฎเชจเซ€ เชชเซเชจเชƒเช‰เชคเซเชชเชพเชฆเชจเช•เซเชทเชฎเชคเชพ เช–เซ‹เชตเชพเชˆ เช—เชˆ เช›เซ‡ (เช…เชฒเชฌเชคเซเชค, เช•เซ‹เชˆ เชคเชฎเชจเซ‡ เช—เชฟเชŸเชฎเชพเช‚เชฅเซ€ เชธเซเชฐเซ‹เชค เช•เซ‹เชกเชจเซเช‚ เช†เชตเชถเซเชฏเช• เชธเช‚เชธเซเช•เชฐเชฃ เชชเชฐเชค เช•เชฐเชตเชพ เช…เชจเซ‡ เชคเซ‡เชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเชฐเซ‡เชถเชพเชจ เช•เชฐเชคเซเช‚ เชจเชฅเซ€. เชคเชฎเชพเชฐเซ‡ เชเช• เชธเชฎเชฏเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชœเซ‡ เชฐเซ€เชคเซ‡ เชคเชฎเชจเซ‡ เชคเซ‡เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡).

เช•เชพเชฐเซเชฏเซ‹ เชชเซ‡เชฆเชพ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

DAG เชจเซเช‚ เช…เชฎเชฒเซ€เช•เชฐเชฃ เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ เช•เซ‹เชก เช›เซ‡, เชคเซ‡เชฅเซ€ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช•เชพเชฎ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช•เซ‹เชกเชจเซ€ เชฎเชพเชคเซเชฐเชพ เช˜เชŸเชพเชกเชตเชพเชจเซ€ เช–เซ‚เชฌ เชœ เช…เชจเซเช•เซ‚เชณ เชฐเซ€เชค เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชถเชพเชฐเซเชก เชธเซ‹เชฐเซเชธ เชธเชพเชฅเซ‡. เชšเชพเชฒเซ‹ เช•เชนเซ€เช เช•เซ‡ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชธเซเชคเซเชฐเซ‹เชค เชคเชฐเซ€เช•เซ‡ เชคเซเชฐเชฃ MySQL เชถเชพเชฐเซเชกเซเชธ เช›เซ‡, เชคเชฎเชพเชฐเซ‡ เชฆเชฐเซ‡เช•เชฎเชพเช‚ เชšเชขเซ€ เชœเชตเชพเชจเซ€ เช…เชจเซ‡ เช…เชฎเซเช• เชกเซ‡เชŸเชพ เชฒเซ‡เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชคเชฆเซเชชเชฐเชพเช‚เชค, เชธเซเชตเชคเช‚เชคเซเชฐ เชฐเซ€เชคเซ‡ เช…เชจเซ‡ เชธเชฎเชพเช‚เชคเชฐ. DAG เชฎเชพเช‚ Python เช•เซ‹เชก เช†เชจเชพ เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชˆ เชถเช•เซ‡ เช›เซ‡:

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 เชฎเชพเช‚เชฅเซ€ เชœเชฐเซ‚เชฐเซ€ เชกเซ‡เชŸเชพ. เชฒเชตเชšเซ€เช•!

เชญเช‚เชกเชพเชฐ

เชเชฐเชซเซเชฒเซ‹ เชชเชพเชธเซ‡ เชคเซ‡เชจเซ€ เชชเซ‹เชคเชพเชจเซ€ เชฌเซ‡เช•เชเชจเซเชก เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€ เช›เซ‡, เชเช• เชกเซ‡เชŸเชพเชฌเซ‡เช (MySQL เช…เชฅเชตเชพ Postgres เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡, เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ Postgres เช›เซ‡), เชœเซ‡ เช•เชพเชฐเซเชฏเซ‹เชจเซ€ เชธเซเชฅเชฟเชคเชฟ, DAGs, เช•เชจเซ‡เช•เซเชถเชจ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ, เชตเซˆเชถเซเชตเชฟเช• เชšเชฒ, เชตเช—เซ‡เชฐเซ‡ เชตเช—เซ‡เชฐเซ‡เชจเซ‹ เชธเช‚เช—เซเชฐเชน เช•เชฐเซ‡ เช›เซ‡. เช…เชนเซ€เช‚ เชนเซเช‚ เชˆเชšเซเช›เซเช‚ เช›เซเช‚ เช•เซ‡ เชนเซเช‚ เช•เชนเซ€ เชถเช•เซเช‚ เช•เซ‡ เชเชฐเชซเซเชฒเซ‹เชฎเชพเช‚ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€ เช–เซ‚เชฌ เชœ เชธเชฐเชณ เช›เซ‡ (เชฒเช—เชญเช— 20 เช•เซ‹เชทเซเชŸเช•เซ‹) เช…เชจเซ‡ เชœเซ‹ เชคเชฎเซ‡ เชคเซ‡เชจเซ€ เช‰เชชเชฐ เชคเชฎเชพเชฐเซ€ เชชเซ‹เชคเชพเชจเซ€ เช•เซ‹เชˆเชชเชฃ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชฌเชจเชพเชตเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹เชต เชคเซ‹ เชคเซ‡ เช…เชจเซเช•เซ‚เชณ เช›เซ‡. เชฎเชจเซ‡ เช‡เชจเซเชซเซ‹เชฐเซเชฎเซ‡เชŸเชฟเช•เชพ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚ 100500 เช•เซ‹เชทเซเชŸเช•เซ‹ เชฏเชพเชฆ เช›เซ‡, เชœเซ‡เชจเซ‹ เช•เซเชตเซ‡เชฐเซ€ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเซ€ เชคเซ‡ เชธเชฎเชœเชตเชพ เชชเชนเซ‡เชฒเชพเช‚ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏ เชธเซเชงเซ€ เช…เชญเซเชฏเชพเชธ เช•เชฐเชตเซ‹ เชชเชกเซเชฏเซ‹ เชนเชคเซ‹.

เชฎเซ‹เชจเซ€เชŸเชฐเซ€เช‚เช—

เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชจเซ€ เชธเชฐเชณเชคเชพเชจเซ‡ เชœเซ‹เชคเชพเช‚, เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช…เชจเซเช•เซ‚เชณ เช•เชพเชฐเซเชฏ เชฎเซ‹เชจเซ€เชŸเชฐเซ€เช‚เช— เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹. เช…เชฎเซ‡ เชเซ‡เชชเซเชชเซ‡เชฒเซ€เชจเชฎเชพเช‚ เชจเซ‹เชŸเชชเซ‡เชกเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช, เชœเซเชฏเชพเช‚ เช†เชชเชฃเซ‡ เช•เชพเชฐเซเชฏเซ‹เชจเซ€ เชธเซเชฅเชฟเชคเชฟ เชœเซ‹เชˆเช เช›เซ€เช:

เชเชฐเชซเซเชฒเซ‹ เช เชฌเซ‡เชš เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ‡ เช…เชจเซเช•เซ‚เชณ เช…เชจเซ‡ เชเชกเชชเชฅเซ€ เชตเชฟเช•เชธเชพเชตเชตเชพ เช…เชจเซ‡ เชœเชพเชณเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซเช‚ เชเช• เชธเชพเชงเชจ เช›เซ‡

เช† เชเชฐเชซเซเชฒเซ‹เชจเซเช‚ เชตเซ‡เชฌ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เชชเชฃ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡:

เชเชฐเชซเซเชฒเซ‹ เช เชฌเซ‡เชš เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ‡ เช…เชจเซเช•เซ‚เชณ เช…เชจเซ‡ เชเชกเชชเชฅเซ€ เชตเชฟเช•เชธเชพเชตเชตเชพ เช…เชจเซ‡ เชœเชพเชณเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซเช‚ เชเช• เชธเชพเชงเชจ เช›เซ‡

เชเชฐเชซเซเชฒเซ‹ เช•เซ‹เชก เช“เชชเชจ เชธเซ‹เชฐเซเชธ เช›เซ‡, เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎเชฎเชพเช‚ เชšเซ‡เชคเชตเชฃเซ€ เช‰เชฎเซ‡เชฐเซ€ เช›เซ‡. เช•เชพเชฐเซเชฏเชจเซ€ เชฆเชฐเซ‡เช• เชšเชพเชฒเซ€ เชฐเชนเซ‡เชฒ เช˜เชŸเชจเชพ, เชœเซ‹ เช•เซ‹เชˆ เชญเซ‚เชฒ เชฅเชพเชฏ, เชคเซ‹ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎเชฎเชพเช‚ เชœเซ‚เชฅเชจเซ‡ เชธเซเชชเชพเชฎ เช•เชฐเซ‡ เช›เซ‡, เชœเซเชฏเชพเช‚ เชธเชฎเช—เซเชฐ เชตเชฟเช•เชพเชธ เช…เชจเซ‡ เชธเชนเชพเชฏเช• เชŸเซ€เชฎเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡.

เช…เชฎเซ‡ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ (เชœเซ‹ เชœเชฐเซ‚เชฐเซ€ เชนเซ‹เชฏ เชคเซ‹) เชฆเซเชตเชพเชฐเชพ เชคเชพเชคเซเช•เชพเชฒเชฟเช• เชชเซเชฐเชคเชฟเชธเชพเชฆ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€เช เช›เซ€เช, เช…เชจเซ‡ เชเซ‡เชชเซเชชเซ‡เชฒเซ€เชจ เชฆเซเชตเชพเชฐเชพ เช…เชฎเชจเซ‡ เชเชฐเชซเซเชฒเซ‹เชฎเชพเช‚ เช•เชพเชฐเซเชฏเซ‹เชจเซเช‚ เชเช•เช‚เชฆเชฐ เชšเชฟเชคเซเชฐ เชชเซเชฐเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡.

เช•เซเชฒ

เชเชฐเชซเซเชฒเซ‹ เชฎเซเช–เซเชฏเชคเซเชตเซ‡ เช“เชชเชจ เชธเซ‹เชฐเซเชธ เช›เซ‡ เช…เชจเซ‡ เชคเชฎเชพเชฐเซ‡ เชคเซ‡เชจเชพเชฅเซ€ เชšเชฎเชคเซเช•เชพเชฐเซ‹เชจเซ€ เช…เชชเซ‡เช•เซเชทเชพ เชจ เชฐเชพเช–เชตเซ€ เชœเซ‹เชˆเช. เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เช‰เช•เซ‡เชฒ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชฏ เช…เชจเซ‡ เชชเซเชฐเชฏเชคเซเชจเซ‹ เช•เชฐเชตเชพ เชคเซˆเชฏเชพเชฐ เชฐเชนเซ‹. เชงเซเชฏเซ‡เชฏ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเซเช‚ เช›เซ‡, เชฎเชพเชฐเชพ เชชเชฐ เชตเชฟเชถเซเชตเชพเชธ เช•เชฐเซ‹, เชคเซ‡ เชฎเซ‚เชฒเซเชฏเชตเชพเชจ เช›เซ‡. เชตเชฟเช•เชพเชธเชจเซ€ เช—เชคเชฟ, เชฒเชตเชšเซ€เช•เชคเชพ, เชจเชตเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เช‰เชฎเซ‡เชฐเชตเชพเชจเซ€ เชธเชฐเชณเชคเชพ - เชคเชฎเชจเซ‡ เชคเซ‡ เช—เชฎเชถเซ‡. เช…เชฒเชฌเชคเซเชค, เชคเชฎเชพเชฐเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เชธเช‚เช—เช เชจ, เชเชฐเชซเซเชฒเซ‹เชจเซ€ เชธเซเชฅเชฟเชฐเชคเชพ เชชเชฐ เช˜เชฃเซเช‚ เชงเซเชฏเชพเชจ เช†เชชเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡: เชšเชฎเชคเซเช•เชพเชฐเซ‹ เชฅเชคเชพ เชจเชฅเซ€.

เชนเชตเซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชเชฐเชซเซเชฒเซ‹ เชฆเชฐเชฐเซ‹เชœ เช•เชพเชฐเซเชฏเชฐเชค เช›เซ‡ เชฒเช—เชญเช— 6,5 เชนเชœเชพเชฐ เช•เชพเชฐเซเชฏเซ‹. เชคเซ‡เช“ เชชเชพเชคเซเชฐเชฎเชพเช‚ เชคเชฆเซเชฆเชจ เช…เชฒเช— เช›เซ‡. เชฎเซเช–เซเชฏ DWH เชฎเชพเช‚ เช˜เชฃเชพเช‚ เชตเชฟเชตเชฟเชง เช…เชจเซ‡ เช–เซ‚เชฌ เชœ เชšเซ‹เช•เซเช•เชธ เชธเซเชคเซเชฐเซ‹เชคเซ‹เชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชฒเซ‹เชก เช•เชฐเชตเชพเชจเชพ เช•เชพเชฐเซเชฏเซ‹ เช›เซ‡, เชฎเซเช–เซเชฏ DWH เชจเซ€ เช…เช‚เชฆเชฐ เชธเซเชŸเซ‹เชฐเชซเซเชฐเชจเซเชŸเซเชธเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเชตเชพเชจเชพ เช•เชพเชฐเซเชฏเซ‹ เช›เซ‡, เชเชกเชชเซ€ DWH เชฎเชพเช‚ เชกเซ‡เชŸเชพ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพเชจเชพ เช•เชพเชฐเซเชฏเซ‹ เช›เซ‡, เชคเซเชฏเชพเช‚ เช˜เชฃเชพ เชฌเชงเชพ เชตเชฟเชตเชฟเชง เช•เชพเชฐเซเชฏเซ‹ เช›เซ‡ - เช…เชจเซ‡ เชเชฐเชซเซเชฒเซ‹ เชฆเชฟเชตเชธ เชชเช›เซ€ เชคเซ‡ เชฌเชงเชพเชจเซ‡ เชšเชพเชตเซ‡ เช›เซ‡. เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชฌเซ‹เชฒเชคเชพ, เช† เช›เซ‡ 2,3 เชนเชœเชพเชฐ DWH (Hadoop) เชจเซ€ เช…เช‚เชฆเชฐ เชตเชฟเชตเชฟเชง เชœเชŸเชฟเชฒเชคเชพเชจเชพ ELT เช•เชพเชฐเซเชฏเซ‹, เช†เชถเชฐเซ‡. 2,5 เชธเซ‹ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเซเชคเซเชฐเซ‹เชคเซ‹, เช† เชเช• เชŸเซ€เชฎ เช›เซ‡ 4 ETL เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“, เชœเซ‡ DWH เชฎเชพเช‚ ETL เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เช…เชจเซ‡ DWH เชจเซ€ เช…เช‚เชฆเชฐ ELT เชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—เชฎเชพเช‚ เชตเชฟเชญเชพเชœเชฟเชค เช›เซ‡ เช…เชจเซ‡ เช…เชฒเชฌเชคเซเชค เชตเชงเซ เชเช• เชเชกเชฎเชฟเชจ, เชœเซ‡ เชธเซ‡เชตเชพเชจเชพ เช‡เชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐ เชธเชพเชฅเซ‡ เชตเซเชฏเชตเชนเชพเชฐ เช•เชฐเซ‡ เช›เซ‡.

เชญเชตเชฟเชทเซเชฏเชจเซ€ เชฏเซ‹เชœเชจเชพเช“

เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ€ เชธเช‚เช–เซเชฏเชพ เช…เชจเชฟเชตเชพเชฐเซเชฏเชชเชฃเซ‡ เชตเชงเซ€ เชฐเชนเซ€ เช›เซ‡, เช…เชจเซ‡ เชเชฐเชซเซเชฒเซ‹ เช‡เชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐเชจเซ€ เชฆเซเชฐเชทเซเชŸเชฟเช เช†เชชเชฃเซ‡ เชœเซ‡ เชฎเซเช–เซเชฏ เชตเชธเซเชคเซ เช•เชฐเซ€เชถเซเช‚ เชคเซ‡ เชธเซเช•เซ‡เชฒเชฟเช‚เช— เช›เซ‡. เช…เชฎเซ‡ เชเชฐเชซเซเชฒเซ‹ เช•เซเชฒเชธเซเชŸเชฐ เชฌเชจเชพเชตเชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช, เชธเซ‡เชฒเชฐเซ€ เช•เชพเชฎเชฆเชพเชฐเซ‹ เชฎเชพเชŸเซ‡ เชชเช—เชจเซ€ เชœเซ‹เชกเซ€ เชซเชพเชณเชตเซ€เช เช›เซ€เช เช…เชจเซ‡ เชœเซ‹เชฌ เชถเซ‡เชกเซเชฏเซเชฒเชฟเช‚เช— เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เช…เชจเซ‡ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€ เชธเชพเชฅเซ‡ เชธเซเชต-เชกเซเชชเซเชฒเชฟเช•เซ‡เชŸเชฟเช‚เช— เชนเซ‡เชก เชฌเชจเชพเชตเชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช.

เช‰เชชเชธเช‚เชนเชพเชฐ

เช†, เช…เชฒเชฌเชคเซเชค, เชนเซเช‚ เชเชฐเชซเซเชฒเซ‹ เชตเชฟเชถเซ‡ เช•เชนเซ‡เชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚ เชคเซ‡ เชฌเชงเซเช‚ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชฎเซ‡เช‚ เชฎเซเช–เซเชฏ เชฎเซเชฆเซเชฆเชพเช“เชจเซ‡ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹. เชญเซ‚เช– เช–เชพเชตเชพเชจเซ€ เชธเชพเชฅเซ‡ เชœ เชฒเชพเช—เซ‡ เช›เซ‡, เชŸเซเชฐเชพเชฏ เช•เชฐเซ‹ เชคเชฎเชจเซ‡ เช—เชฎเชถเซ‡ :)

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹