Technical Deep Dive from AWS Support Series [3] BigData Profile ç·š
AWS ãµããŒã Cloud Support Engineer ã® Hori ããã«ãTechnical Deep Dive ã«ã€ããŠèªã£ãŠããã ããŸãããCloud Support Engineer ã¯ã10ã®æè¡ãããã¡ã€ã«ã«ããããæè¡åã§ã客ããŸã®ã€ãããŒã·ã§ã³ããæäŒãããŠããŸããã客ããŸã®æè¡çãªåé¡ã課é¡ã解決ããããã«ãCloud Support Engineerã¯ãæã«æ·±ã èª¿æ» æ€èšŒ åæ èå¯ã è¡ãããšããããŸãããã®ãããªæ·±æããç§ãã¡ã¯ Deep Dive ãšåŒãã§ããŸããä»åã¯ãDeep Dive ã®äºäŸãšããŠãBigData Profileã§ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®æ§åãã玹ä»ããŸããCloud Support Engineer ã® Deep ãªäžçã«é£ã³èŸŒãã§ã¿ãŠãã ãããâ ãããã£ãŒã«
ã¢ããŸã³ãŠã§ããµãŒãã¹ãžã£ãã³ååäŒç€Ÿ ãµããŒããšã³ãžãã¢ãªã³ã°
Hori ïŒ ã¯ã©ãŠããµããŒããšã³ãžãã¢ïŒBigData ProfileïŒ
Tateno ïŒ ã·ãã¢ã¯ã©ãŠããµããŒããšã³ãžãã¢ïŒDatabase ProfileïŒ
ã¯ããã«
ããã«ã¡ã¯ãTechnical Deep Dive from AWS Support Series ã® 3åç®ãšãªããŸããä»åãã€ã³ã¿ãã¥ãŒã¯Senior Cloud Support Engineerã®Tatenoãã€ãšããŸããããã§ã¯ãæ©éèªå·±ç޹ä»ããã ããŸãã§ããããã
ãããããé¡ãããŸãã Hori ã§ããå
¥ç€Ÿåã«ããŒã¿ããŒã¹ç®¡çãªã©ãäžå¿ãšããæ¥åçµéšããã£ãã®ã§ãå
¥ç€ŸåŸã¯Database Profileã§ããŒã¿ããŒã¹é¢é£ã®ãåãåãããäžå¿ã«å¯Ÿå¿ããŠããŸããããã®é ãããããŒã¿ããŒã¹ã«èç©ãããããŒã¿ã®å©çšã«ãé¢å¿ããããHadoopãã¯ãããšããããã°ããŒã¿æè¡ã«ãã£ã¬ã³ãžãããæ°æã¡ããããŸããããã®åŸããããã¡ã€ã«ç°åãããŸããŠãçŸåšã¯ BigData Profile ã§ AI/ML ã忣åŠçãåŠã³ã€ã€ã客ããŸã®ãåãåããã®å¯Ÿå¿ãããŠããŸãã
ããããšãããããŸãããã®ãããã¡ã€ã«ãç§»ãããçµéšã£ãŠãä»äºã«åœ¹ç«ã£ãããšãã£ãããšã¯ãããŸããã§ããããã
æ°ããé åã®ãã£ã¬ã³ãžãšãªãã®ã§ãåŠã¶ããšãå€ããã倧å€ã§ã¯ãããŸããããæ°ããç¥èãçµéšãã§ããã®ã§ãè¯ãã£ããšæã£ãŠããŸãã åŠç¿é¢ã§ã¯ããŒã¿ããŒã¹ã®ç¥èãçµéšã掻ãããå Žé¢ããããŸããã äŸãã°ãã©ã³ã¶ã¯ã·ã§ã³ãã° (Write Ahead Log) ãªã©ã®ä»çµã¿ã¯ããŸããŸãªãšããã§äœ¿ãããŠãããåŠç¿ã®éã®çè§£ã®å©ãã«ãªã£ãŠããŸãã ãŸããããŒã¿ããŒã¹ã®èãæ¹ãä»çµã¿ã¯æãã䜿ãããŠããå®å®ãããã®ãå€ãèªèã§ããããã®ä»çµã¿ã§ã¹ã±ãŒã«ããããšãé£ãããšãã課é¡ããããã°ããŒã¿ã®ããŒã¿åŠçã§æ°ããæè¡ãèããããŠããã±ãŒã¹ãããã®ã§ã宿ããã£ãŠçè§£ãããããšããç¹ããããŸãããããŒã¿ããŒã¹ãã®ãã®ä»¥å€ã§ããããŒã¿ããŒã¹åšèŸºæè¡ã§ãããã¯ãŒã¯åšãã®ç¥èãã¹ãã¬ãŒãžã®ç¥èãªã©ããåå©çšã§ããç¥èã§åœ¹ç«ã¡ãŸããã
ããããšãããããŸããDatabase Profile ãš BigData Profile ã®éã§ã¯ãããŒã¿ãæ±ããšããæå³ã§ãæ§ã
ãªå
±éæè¡ããããªãšãç§ãåžžæ¥é ããæããŠãããŸãã
AWS Glue ã«ã€ããŠ
ããã§ã¯ãä»å AWS Glue ã«ã€ããŠã話ãããã ãããšäŒºã£ãŠãããŸãã®ã§ããŸãæåã«ãAWS Glue ã«ã€ããŠç°¡åã«ã玹ä»ããã ããŸãã§ããããã
AWS Glue ã¯è€æ°ã®ããŒã¿ãœãŒã¹ããããŒã¿ãç°¡åã«æ€åºãæºåãç§»åãçµ±åã§ããããã«ãããµãŒããŒã¬ã¹ã®ããŒã¿çµ±åãµãŒãã¹ã§ããäŸãã°ãåºåå
ãšããŠäžè¬çãªãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã®ããã«æ§é åããŒã¿ãšããŠæ ŒçŽãããããã©ããå
ã®ããŒã¿ãœãŒã¹ãåæ§é åããã¹ãããŒã¿ã§ãããããªæã«ãETL (Extract Transform Load) åŠçãè¡ãæ§é åããŒã¿ã«å€æããããšãã§ãããµãŒãã¹ã§ãã
ããããšãããããŸããæ¬¡ã«ãAWS Glue ã«éŠŽæã¿ã®ãªãæ¹ãå€ããšæããŸãã®ã§ããã²ç°¡åã« AWS Glue ã®ä»çµã¿ã«ã€ããŠã玹ä»ããã ããã°ãšæããŸãã
AWS Glueã®å€§ãŸããªã³ã³ããŒãã³ãã«ã€ããŠèª¬æããŸãã

ãŸããã¯ããŒã©ãŒ (Crawler) ã¯ãããŒã¿ãœãŒã¹ãã¯ããŒãªã³ã°ããèªåçã«æšæž¬ããã¹ããŒãæ§æãããŒã¿ã«ã¿ãã°ã«ããŒãã«ãšããŠèšé²ããŸãããã®ããŒã¿ã«ã¿ãã° (Data Catalog) ãšã¯ããŒãã«ãªã©ã®ã¡ã¿ããŒã¿æ
å ±ãä¿ç®¡ããã¡ã¿ããŒã¿ã¹ãã¢ã§ããã¡ã¿ããŒã¿ãªã®ã§å®ããŒã¿ã¯ãããŸãããããŒãã«ãšã¯ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã® Create Table DDL ã¯ãšãªã§æå®ããã«ã©ã åãšåãªã©ã®æ
å ±ãæã£ãŠãããã®ããšã€ã¡ãŒãžãããšããããããããšæããŸããæ¬¡ã«ãETL ãžã§ãã§ã¯ãããŒã¿ã«ã¿ãã°ã«ç»é²ãããã¡ã¿ããŒã¿æ
å ±ãå©çšããŠããŒã¿ãœãŒã¹ã«æ¥ç¶ããããŒã¿ã倿ãããšãã£ãããšãå¯èœã§ãã
æµããšããŠã¯ãã¯ããŒã©ã䜿çšããŠãžã§ãã§åŠçãè¡ãããããŒã¿ãœãŒã¹ãšã¿ãŒã²ãããã¯ããŒãªã³ã°ããããŒã¿åãªã©ã®ã¹ããŒãæ
å ±ãããŒã¿ã®æ ŒçŽå ŽæãSerDe (Serializer/Deserializer) ãªã©ã®ã¡ã¿æ
å ±ãããŒã¿ã«ã¿ãã°ã«ããŒãã«ãšããŠç»é²ããŸããETL ãžã§ãã§ã¯ããŒã¿ã«ã¿ãã°ã«ç»é²ãããããŒãã«ã®æ
å ±ãããšã«ããŒã¿ãœãŒã¹ã®ããŒã¿ãã¿ãŒã²ããã®åããã©ãŒãããã«åã圢ã«å€æããŠã¿ãŒã²ããã«ããŒãããããšããæµããšãªããŸãã
ã客ããŸããã®ãåãåããã«ã€ããŠ
ãµãŒããŒã¬ã¹ã§ ETL ã宿œã§ããã®ã¯çŽ æµã§ãããããããšãããããŸããããã§ã¯æ¬¡ã«ãä»åã®ã話ã§ã¯ãã客ããŸããã©ã®ãããªãåãåãããåããããŸããã§ããããã
ä»åã玹ä»ãããåãåããã®å
容ã¯ãAmazon DynamoDB ã®ããŒãã«ãã¯ããŒã«ãããŒã¿ã«ã¿ãã°ã«ããŒãã«ãäœæããŠããç¶æ³ã§ãVisual Editor ãšããæ©èœã§ DynamoDB ããŒãã«ã®ããŒã¿ã CSV ã«åºåãã ETL ãžã§ããäœæããŠå®è¡ããéã«ãšã©ãŒãšãªã£ããšããç¶æ³ã§ããããšã©ãŒã®åå ãšå¯Ÿçã«ã€ããŠæããŠã»ãããšãããåãåãããšãªããŸãããšã©ãŒã¡ãã»ãŒãžã«ãŠãAn error occurred while calling o95.pyWriteDynamicFrame. Cannot write set Field fruits to CSVããšãã£ãã¡ãã»ãŒãžãèŠåããããŠãããããŒã¿ã®å€æã§å€±æããŠãããšèããããç¶æ³ã§ããã
ETL ãžã§ãäžã§ãããŒã¿ã®å€æããããšãã«ãšã©ãŒãåºãŠãããšããçš®é¡ã®ãåãåããã ã£ããã§ããããšãªããšãå
ã»ã©ã説æããã ããã¢ãŒããã¯ãã£ãŒããèããŠãã客ããŸã®èª²é¡ãã©ã®ããã«çè§£ãããŸããã§ããããã
ãåãåããã®æé¢ãããã客ããŸã®æ¬åœã«è§£æ±ºãããã課é¡ã¯ããDynamoDB ããŒãã«ãããããŒã¿ã CSV ã«å€æããŠåºåããããã§ãããšèªã¿ãšããŸãããä»åã¯èª²é¡ãæçã§ãããäŸãã°ãäžæç¹ãããå Žåã¯ãã€ãªã³ã°ãæç¢ºã«ããããã®ã³ãã¥ãã±ãŒã·ã§ã³ãã客ããŸãšè¡ããŸããç¶ããŠãã客ããŸã®èª²é¡ããããã®ãåãåããã§æã
ããæ¡å
ããã¹ãå
容ãèããŸãããŸãããšã©ãŒã®èª¿æ»ããåžæã§ãã®ã§ãšã©ãŒã®èª¿æ»çµæã¯å¿
èŠã§ããã客ããŸãæ¬åœã«ããããããšã¯ãDynamoDB ããŒãã«ã®ããŒã¿ã CSV ã«åºåããããšãã§ãã®ã§ããžã§ãããšã©ãŒã«ãªããã«ãCSV ã«åºåã§ãããããªæ¹æ³ããæ¡å
ããå¿
èŠãããããã§ãã
課é¡ã®æ·±æãã«ã€ããŠ
ãšãªããšããã®èª²é¡ã解決ãããããã©ã®ããã«æ·±æããé²ããããŸãããã
ä»åã¯ããšã©ãŒã¡ãã»ãŒãžãšãžã§ãã©ã³ ID ãšããããžã§ãå®è¡æã®åºæã® ID ãããã ããŠããŸããæã
ãµããŒããšã³ãžãã¢ã¯ãå
éšããŒã«ããæ§ã
ãªæ
å ±ã確èªããããšãå¯èœã§ããããžã§ãã©ã³ ID ããåœæã®ç¶æ
ã確èªããå®è¡ãã°ã«ã¢ã¯ã»ã¹ããããšãã§ããŸãããŸãã¯ãå
éšã®ããŒã«ã䜿ã£ãŠãåœæã®å®è¡ç°å¢å®è¡ãã°ã®ç¢ºèªãè¡ããæ
å ±ãåéããŸããä»åã¯å
éšããŒã«ã§ç¢ºèªãããã°ãããã¹ã¿ãã¯ãã¬ãŒã¹ã確èªã§ããŸããã
ãšã©ãŒã¡ãã»ãŒãžãåºåãããŠããããªåŠçãç¹å®ãããµãŒãã¹ã®ãœãŒã¹ã³ãŒããããšã©ãŒç®æã確èªãããšãå€æå¯Ÿè±¡ã®ããŒã¿ã®ãã£ãŒã«ãã«ãSet åã Map åãããå Žåã«ã¯ CSV ã«å€æã§ããªãã¡ãã»ãŒãžãåºåããŠããŸãããçŽæçã«ã Set åã Map åãšãã£ãããŒã¿æ§é ã¯ããã®ãŸãŸ CSV ã«ããã€ã¡ãŒãžãæ¹§ããŸããããããã®ããŒã¿åã¯äºåã«å€æåŠçãè¡ãå¿
èŠããããŸãã
ä»åã¯ã客ããŸã®ããŒã¿ãœãŒã¹ã DynamoDB ããŒãã«ãšã®ããšã§ãé¡äŒŒã®ç°å¢ãäœæã§ãããã§ãã£ããããå®éã«åçŸç¢ºèªã詊ã¿ãŸãããDynamoDB ããŒãã«ã« Set åã®ã¢ã€ãã ãæ ŒçŽã ETL ãžã§ãã§ CSV ã«å€æãè¡ããšäºè±¡ãåçŸããŸãããããã§åå ã¯ã»ãŒç¹å®ã§ãããšèããããŸãã察çãšããŠã¯ Set åããã©ããåããæ¹æ³ãšãªããšèããããã®ã§ããã©ããååŠçã远å ããŠãå床ãžã§ããå®è¡ãããšãããæåŸ
éãã« CSV åºåã§ããããšã確èªããŸããã
Set åãšããã®ã¯ã仿§äžãCSV ã«ã¯å€æã§ããªããšããããšã§ãã
ããã§ãããäžèšã®å³ã®äžæ®µã®ããã«ãSet åãªã©ã®è€æ°ã®èŠçŽ ã§æ§æãããŠããåãCSVã«ããã«ã¯å
å
ããèŠçŽ ãåãæ±ãããšãé£ããããšæããŸããäžæ®µã®ããã« Set åã®èŠçŽ ãæœåºããŠãããããå¥ã®åã®ããŒã¿ãšãªããããã©ããåãè¡ãããšãä»åã®å¯ŸåŠãšããŠèããŸããã

ãã®ãã©ããåãšããåŠçã¯ãã©ã®ããã«å®çŸã§ãããã§ããããã
ãã©ããåãè¡ãã«ã¯ãèšèªã«ãã£ãŠã¯äŸ¿å©ãªã¡ãœãããšããŠãã©ããåãè¡ãææ³ãçšæãããŠããå ŽåããããŸãããäžè¬ã«ã¯ã«ãŒãåŠçã§åèŠçŽ ãåãåºããŠå¥ã®åãšããŠæ±ãããã«ããã°ã©ã ãæžãããšã«ãªãããšæããŸããå®ã¯ãAWS Glue ãµãŒãã¹ã§ã¯ããããŒãžãã«æäŸããŠãã䟿å©ãªå€æã®æ©èœãããããã©ããåãç°¡åã«è¡ããããã«ãªã£ãŠããŸããä»åã®ã±ãŒã¹ã§ã¯ããã®ãããŒãžãã®ä»çµã¿ããæ¡å
ããŠãããŸãã
ããããšãããããŸããã¹ã¿ãã¯ãã¬ãŒã¹ãããšã©ãŒãçºçããå Žæãšãšã©ãŒã®çš®é¡ãåæããããããèãããã察åŠãå°ãã ããŠåé¡è§£æ±ºãããããã§ãããä»åã¯ãã¡ãã»ãŒãžããè«ççãªæèã§åé¡ãèŠéãããšæãã®ã§ãããããè€éãªåé¡ã§ããšã調æ»ã«æéãããããšãããã以åã«äºè±¡ã®åçŸãŸã§ãªããªãèŠéããªãå ŽåããããããšæããŸãããããã£ãå Žåãã©ã®ããã«å¯Ÿå¿ãããŸããã
çµæ§é£ãããšããããã£ãŠãå
ãããã©ãã«ã·ã¥ãŒãã£ã³ã°ã¯ã客ããŸãšäºäººäžèã§åãçµãå¿
èŠããããŸãããã客ããŸã®ããŒã¿ã«äŸåããŠããå Žåãªã©ãåçŸç°å¢ã®äœæãé£ããã±ãŒã¹ã§ã¯ãããã«å¯ãªé£æºãå¿
èŠãšãªããŸããã客ããŸã®ç°å¢ã§ãã詊ããªãç¶æ³ãšãªãã®ã§ãæ
éã«ãšã©ãŒã¡ãã»ãŒãžãªã©ã®æççãªæ
å ±ããåé¡ãæãäžãã仮説ãç«ãŠãŠåé¿çãªã©ã®æš¡çŽ¢ãè¡ããŸãã
åçŸç°å¢ã®äœæãé£ããã±ãŒã¹ã®äŸãšããŠã¯ãããã©ãŒãã³ã¹ã®åé¡ããããŸããã客æ§ã®ç°å¢ã®ããŒã¿ãã³ãŒãã«äŸåããå ŽåãåçŸç°å¢ãäœããªãã±ãŒã¹ããããŸãããã®ãããªå Žåã«åœ¹ç«ã€æ
å ±ãšããŠãAWS Glue ã® Spark Job ããã©ãŒãã³ã¹ãã¥ãŒãã³ã°ã«é¢ããæ
å ±ããŸãšãŸã£ãŠãããAWS Glue Apache Spark ãžã§ãã®ããã©ãŒãã³ã¹ãã¥ãŒãã³ã°ã®ãã¹ããã©ã¯ãã£ã¹ããšããããã¥ã¡ã³ãããããŸããããã©ãŒãã³ã¹ã®åé¡ã®ã¢ãããŒããèãæ¹ã«ã€ããŠãèšèŒãããŠããã®ã§ãããã©ãŒãã³ã¹ã«ãæ©ã¿ã®éã«ã¯ãäžèªããã ããšããããšæããŸãã
ãŸããç§ãã¡ã¯ãåå ãããããªããŠãåé¿çããæ¡å
ã§ããããšãéèŠã§ãããšèããŠãããã§ããã ãæ©ãã¿ã€ãã³ã°ã«ãŠãã客ããŸã®ã·ã¹ãã ãã¡ãããšåãããã«ããããšãããšããããããŸããããã°ããŒã¿é¢é£ã®ãµãŒãã¹ã¯å€ãã®ãµãŒãã¹ãšçµ±åãããŠãããã®ããããŸãã®ã§ãä»ã®ãµãŒãã¹ãä»çµã¿ã䜿ã£ãŠåé¿çããæ¡å
ããããšã¯ã倧åã ãšèããŠããŸãã
ããããšãããããŸãã課é¡ãæ ¹æ¬çã«è§£æ±ºãããã®ãšåãããããã§ããã ãæ©ãããŸã客ããŸããå°ãã®äºè±¡ãç·©åããããšããæã
æè¡ãµããŒãã«ãšã£ãŠã¯å€§äºã§ãããããšãŠãå
±æããŸãããšããããšã§ãä»å BigData Profile ãã Hori ããã« AWS Glue ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°äŸã䌺ããŸãããããããšãããããŸããã
ããããšãããããŸããã
ããããã€ãã³ã
ããããã®èšäº

ãããŒã¿ã掻çšããããã§ãäœããïŒâNTTããŒã¿MSEã«èããæ¢ãŸã£ãŠããäžæ©ã®é²ãæ¹ã

ãHondaæè¡è ãèè ãšèªãåã vol.1ïœHondaÃã°ãããæ°ã³ã©ãã SDVæä»£ã®ã¢ããªãã£éçºçŸå Žã«ãããããŒã¿ã®éèŠæ§ãšäŸ¡å€åµåºãšã¯


![Technical Deep Dive from AWS Support Series [3] BigData Profile ç·š](https://s3.techplay.jp/tp-images/column/5238/Lw2qQNjJC7kt3jpVuSFZfbdcOX21CPUeZKTB3fBH.jpg)







