ã»ãã·ã§ã³ã¿ã€ãã«
Data Observability and OpenLineage
ã¯ããã«
AI ã®æµžéã«ãããŠãããŒã¿ã®éèŠæ§ã¯ãŸããŸãé«ãŸã£ãŠããŸãããŸããåæã« AI ã·ã¹ãã ãäžã€ã®ã·ã¹ãã ã ãã§å®çµããã«ãè€æ°ã®ã·ã¹ãã ããã€ãã©ã€ã³ã§çµã¿åãããŠå®è£
ããããšãäžè¬çã«ãªã£ãŠããŸãã
ããŒã¿ãè€éãªãã€ãã©ã€ã³ãééãã倿§ãªã·ã¹ãã ãããŒã ãè·šãã§åŠçãããéçšã§ãäºæãã¬ç¬éã«ãäžé©åãªããŒã¿ããæ··å
¥ããã·ã¹ãã å
šäœã«åœ±é¿ãåãŒãããšããããŸãã
äŸãã°ãããŒã¿ã«èª€ã£ãå€ãå ¥åããããã®ããŒã¿ãæ©æ¢°åŠç¿ã¢ãã«ã®åŠç¿ã«çšããããçµæãæ€çŽ¢çµæãæ¬æ¥æå³ãããã®ãšã¯å šãç°ãªããã®ã«ãªã£ãŠããŸãããšãã£ãäºäŸãæããããŸãããã®ãããªç¶æ³ã«ãããŠãåå ãç¹å®ããããšããŠããããŒã¿ã®åºæãæµããå©çšè ãææ¡ããããšãå°é£ãªå Žåããæé»çãªäŸåé¢ä¿ããäžæçã§ããããã«ãåé¡è§£æ±ºã«å€å€§ãªæéãèŠããŸããããã§éèŠã«ãªã£ãŠããã®ãããããŒã¿ãªããŒãžãã§ãã
ããŒã¿ãªããŒãžãšã¯ïŒ
ããŒã¿ãªããŒãžãšã¯ãããŒã¿ãã©ãããæ¥ãŠãã©ããžè¡ããã©ã®ããã«å€æããã誰ã«ãã£ãŠæ¶è²»ããããã瀺ãã¡ã¿ããŒã¿ã®ããšã§ããããã¯ãŸãã§ãåçã«ä»éããEXIFããŒã¿ãããã®åçãã©ãã§ããã€æ®ããããã瀺ãã®ãšåãããã«ãããŒã¿ã®ãæ¥æŽããèšé²ãããã®ã§ãã
ããŒã¿ãªããŒãžã確ç«ããããšã以äžã®ãããªã¡ãªããããããŸãã
- è¿ éãªåé¡ç¹å®ïŒããŒã¿ã®åé¡ãçºçããéã圱é¿ç¯å²ãçŽ æ©ãç¹å®ããåå ç®æãçªãæ¢ããããšãã§ããŸãã
- 倿Žã®åœ±é¿åæïŒã·ã¹ãã ã«å€æŽãå ããåã«ããã®å€æŽãã©ã®ããŒã¿ãããŠã³ã¹ããªãŒã ã®ã¢ããªã±ãŒã·ã§ã³ã«åœ±é¿ãäžããããäºæž¬ã§ããŸãã
- ã³ã³ãã©ã€ã¢ã³ã¹å¯Ÿå¿ïŒæ³åããŒã ãªã©ããããŒã¿ã®åºæãæµãã«ã€ããŠåãåããããã£ãéã«ãæ£ç¢ºãªæ å ±ãæäŸã§ããŸãã
ããããçŸå®ã®ããŒã¿ãšã³ã·ã¹ãã ã¯éåžžã«è€éã§å€æ§ãªãã¯ãããžãŒãæ··åšããŠããããããããç°ãªãèšèªã話ããŠããŸãããã®ç°ãªãèšèªã話ãã·ã¹ãã éã§ãããŒã¿ã®ã€ãªãããé¢ä¿æ§ãææ¡ããã®ã¯è³é£ã®æ¥ã§ããã
ãã®èª²é¡ã«å¯ŸåŠããããã«ããOpenLineageããšãããªãŒãã³ã¹ã¿ã³ããŒããç»å ŽããŸããã
OpenLineageã¯ããã«ããŠãã®åé¡ã解決ãããïŒ
OpenLineageã¯ããã®èª²é¡ã«å¯ŸããŠãå ±éã®èšèªã远å ããããšããã¢ãããŒããåããŸããããã¯ãããŒã¿ãã€ãã©ã€ã³ã«é¢ããã¡ã¿ããŒã¿ãåéããå ±æããããã®ãªãŒãã³ã§ãã³ããŒãã¥ãŒãã©ã«ãªæšæºã§ãã
ã¡ã¿ããŒã¿ãåéããæ¹æ³ã¯ããã€ãèããããŸãã
- ãœãŒã¹ã³ãŒãåæïŒSQLã¯ãšãªãªã©ãè§£æããã¡ã¿ããŒã¿ãæœåºããŸãããã ãããããã€ãããŠããªãã³ãŒããæ¬çªç°å¢ãšã®ä¹é¢ãçããå¯èœæ§ããããŸãã
- ã¢ã¯ãã£ããã£ãã°ã®è§£æïŒã·ã¹ãã ãåºåããã¯ãšãªå±¥æŽãã¢ã¯ãã£ããã£ãã°ããæ å ±ãèªã¿åããŸãããã°åœ¢åŒã®å€æŽã«åŒ±ãããªã¢ã«ã¿ã€ã æ§ã«æ¬ ãããªã©ã®èª²é¡ããããŸãã
- ããŒã¿ã·ã¹ãã ãšã®çŽæ¥çµ±åïŒãªãŒã±ã¹ãã¬ãŒã·ã§ã³ããŒã«ãåŠçãšã³ãžã³ãããŒã¿ãŠã§ã¢ããŠã¹ãããŒã¿ããŒã¹ãªã©ãå®éã«ããŒã¿ãåŠçããã·ã¹ãã ãšçŽæ¥é£æºããŸãã
OpenLineage ã«ãããŠã¯ããã®3ã€ç®ã®ãçŽæ¥çµ±åããæãåªããŠãããšèããŠããŸããããã¯ãããŒã¿ããŒã¹èªäœãã©ã®ãããªããŒã¿ãåŠçããŠããããæ£ç¢ºã«ç¥ã£ãŠãããããæšæž¬ããã°è§£æã«ãã誀差ããªããããšãã§ããããã§ãã
OpenLineageã¯JSONã¹ããŒã仿§ãšããŠå®çŸ©ãããPythonãJavaãªã©ã®äž»èŠèšèªåãã©ã€ãã©ãªãæäŸãããŠããããªãŒãã³ãœãŒã¹ã³ãã¥ããã£ã«ãã£ãŠæ¢ã«å€ãã®çµ±åãé²ããããŠããŸãã
æšæºåã®éèŠæ§
æšæºåã¯éåžžã«éèŠã§ããããæšæºããªããã°ãåãã³ããŒããŠãŒã¶ãŒãããããç¬èªã® DBT ã Spark çµ±åãéçºããããšã«ãªããå
šäœã®éçšäŸ¡å€ã¯äœããã®ã«ãªã£ãŠããŸããŸããäŸãã°ãããŒã¿å質ã®åé¡ããã€ãã©ã€ã³ã®å·ŠåŽã§çºçããŠããæšæºããªããã°ãã®åœ±é¿ãæçµçãªããã·ã¥ããŒãã«ã©ãçŸããã®ãããªãæ°åãééã£ãŠããã®ãã远跡ããããšãã§ããŸããã
OpenLineageã¯ããªãã¶ãŒãããªãã£ã®åéã§åºãç¥ãããOpenTelemetryãšåæ§ã®DNAãæã£ãŠããŸããOpenTelemetryã忣ãœãããŠã§ã¢ã·ã¹ãã ã®ãã¬ã¡ããªãŒããŒã¿ïŒã¡ããªã¯ã¹ããã°ããã¬ãŒã¹ïŒã«çŠç¹ãåœãŠãã®ã«å¯ŸããOpenLineageã¯ããŒã¿ãã€ãã©ã€ã³ã«ç¹åããŠæ§èœåæãè¡ãããšãç®æããŠããŸãã
OpenLineageã®ã³ã¢ã³ã³ã»ãã
OpenLineageã®æ žãšãªãã®ã¯ã以äžã®3ã€ã®ãšã³ãã£ãã£ã§ãã
- ãžã§ã (Job)ïŒããŒã¿ã倿ãããã€ãã©ã€ã³ã®ã¿ã¹ã¯ïŒäŸïŒSparkãžã§ããDBTã¢ãã«ãªã©ïŒãååãšåå空éã§èå¥ãããŸãã
- å®è¡ (Run)ïŒç¹å®ã®ãžã§ãã®å®è¡ã€ã³ã¹ã¿ã³ã¹ãå®è¡IDã§èå¥ãããŸãã
- ããŒã¿ã»ãã (Dataset)ïŒãã€ãã©ã€ã³ã§çæãŸãã¯æ¶è²»ãããããŒã¿ã®æœè±¡çãªè¡šçŸãååã§èå¥ãããŸãã
ãããã®ãšã³ãã£ãã£ã«ã¯ãããã«ãããŒã¿ãã¡ã»ãã (Data Facets)ããšåŒã°ããæ¡åŒµå¯èœãªã¡ã¿ããŒã¿æ§é ãä»äžã§ããŸããããã«ã¯ãããŒã¿ã»ããã®ã¹ããŒãæ
å ±ïŒã«ã©ã åãåïŒãåŠçãããSQLã¯ãšãªããŸãã¯ãžã§ãã®éå±€æ
å ±ã衚ãã芪ãã¡ã»ãã (Parent Facet)ããªã©ãå«ãŸããŸãã
ãã®æ
å ±ã¯ããã€ãã³ãããšãã圢ã§éä¿¡ãããŸããç¹ã«éèŠãªã®ããå®è¡ã€ãã³ã (Run Events)ãã§ãããã«ã¯ãžã§ããæ¶è²»ãããå
¥åããŒã¿ã»ããããšçæãããåºåããŒã¿ã»ããããèšè¿°ãããŠãããããã«ãã£ãŠå®è¡æã®ãªããŒãžæ
å ±ããã£ããã£ã§ããŸããå®è¡ã€ãã³ãã«ã¯ãéå§ãå®è¡äžãå®äºïŒæåã»å€±æïŒãäžæ¢ãšãã£ãã©ã€ããµã€ã¯ã«ããããŸãã

ç°ãªãã·ã¹ãã ã®ã€ãªãããå¯èŠåãã
OpenLineageã®åªããç¹ã¯ãç°ãªããã¯ãããžãŒã§åããžã§ãéã®ãªããŒãžããããŒã¿ã»ããã®åœåèŠåããæšæºåããããšã§ç¹ãåãããç¹ã«ãããŸããäŸãã°ãSparkãSnowflakeã®ããŒã¿ã»ãããçæããæ¬¡ã«DBTãããã䜿ã£ãŠåæãè¡ããšãã£ãå Žåã§ããOpenLineageã®æšæºåãããåœåèŠåïŒããŒã¿ããŒã¹ãããŒãã«åããããžã§ã¯ãIDãªã©ïŒãçšããããšã§ããããå¥ã ã®ãžã§ãã«ãã£ãŠçæã»æ¶è²»ãããããŒã¿ã»ãããçµåãããšã³ã to ãšã³ãã®ãªããŒãžã°ã©ããæ§ç¯ããããšãã§ããŸãã
ããã¯åæ£ãã¬ãŒã·ã³ã°ãšã¯ç°ãªããããŒã¿ãã€ãã©ã€ã³ã§ã¯ãããããŒã ãããŒã¿ãäœããå¥ã®ããŒã ããããèªãããšããããã«ãçŽæ¥çãªãªã¯ãšã¹ãã®äŒæããªããããããŒã¿ã»ããã®åœåèŠåãšãžã§ãã®èŠ³æž¬ãçµã¿åãããŠã°ã©ããç¹ãåãããå¿ èŠãããã®ã§ãã
Datadogã§ã®OpenLineage掻çšäºäŸ
DatadogããOpenLineageã®æ©æµãåããŠããŸãã Datadogã®ããŒã¿ãžã§ãç£èŠãããã¯ãã§ã¯ãOpenLineageã€ãã³ããçŽæ¥åã蟌ãããšã§ãAirflow DAGsãDBTã¢ãã«ãSparkãžã§ãã®å®è¡ç¶æ³ãã¿ã¹ã¯ã®æéã倱æãªã©ã®ãããã¬ãã«ã®ã¡ã¿ããŒã¿ãç£èŠã§ããŸãã
ç¹ã«ãAirflow DAGãDBTãããžã§ã¯ããèµ·åãããããªã·ããªãªã§ã¯ãOpenLineageã®run IDãšparent run IDã®æŠå¿µã䜿ã£ãŠãç°ãªããšã³ãã£ãã£ããžã§ãéã®ã³ã³ããã¹ããäŒæãããæçµçã«å šãŠã®æ å ±ãããã¯ãšã³ãã§çµ±åãããšã³ãããŒãšã³ãã®äœéšãæäŸããŠããŸããããã«ãããäŸãã°Airflowããèµ·åãããSparkãžã§ãã®å®è¡ç¶æ³ãããããæ¶è²»ã»çæããããŒã¿ã»ããã®ã¹ããŒãæ å ±ãŸã§ãã©ã³ã¿ã€ã ã§å®å šã«ãã£ããã£ããããšãå¯èœã«ãªããŸãã
OpenLineageã¯ãDatadog瀟å ã§ããšã³ãžãã¢ãªã³ã°ããŒã ã®è°è«ãåæžããããŒã¿ã¢ãã«ã®èšèšæéãå€§å¹ ã«ççž®ããã®ã«åœ¹ç«ã£ãŠããŸããæ¡åŒµæ§ã®ããã¢ãã«ã®ãããã§ãè¿ éãªæææ±ºå®ãå¯èœã«ãªãã®ã§ãã
ãŸãšã
OpenLineageã¯ãããŒã¿ãã€ãã©ã€ã³å šäœã«çµ±äžããããªãã¶ãŒãããªãã£ããããããŸããäœããå£ãããšãã«ãã©ãã§å£ããã®ããç¹å®ããã®ãæ Œæ®µã«å®¹æã«ãªããŸããç¹å®ã®ã«ã©ã ãã©ã®ããŒã¿ãœãŒã¹ããã©ã®ããã«èšç®ãããã®ãã远跡ã§ãããããããŒã¿ã®æ¥æŽãšæ£ç¢ºæ§ã«å¯Ÿããä¿¡é Œãé«ããããšãã§ããŸãã
OpenLineageã¯ãªãŒãã³æšæºã§ããããããã®åäœã¯æ¥çå
šäœã§äžè²«ããŠããããšã³ã·ã¹ãã å
šäœã®ã³ã©ãã¬ãŒã·ã§ã³ãä¿é²ããŸãã
GitHubãžã®åå ãSlackã³ãã¥ããã£ãããããã§ãã®ã§ããèå³ã®ããæ¹ã¯ãã²ïŒ
