Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
½ðÈÚ·ç¿ØÊý¾Ý¹ÜÀí¡ª¡ªº£Á¿½ðÈÚÊý¾ÝÀëÏß¼à¿Ø·½·¨
 
×÷Õߣº ³ÌÕܺÀ
  2613  次浏览      27
 2021-5-24
 
±à¼­ÍƼö:
±¾ÎÄÏêϸÂÛÊöÁ˸÷½°¸TaskMaker¡¢ Calculator¡¢ CheckerµÈ¸÷¸öÄ£¿éµÄÉè¼ÆÊµÏÖ£¬×îÖÕʵÏÖÁËÓû§ÎÞÐè¶îÍ⿪·¢£¬Ö»ÐèÒª¼òµ¥µÄÅäÖü´¿ÉÍê³É¼à¿ØÖ¸±êµÄ¼ÆËãºÍÍÆËÍ£¬±ÜÃâÁËÈËÁ¦ÀË·Ñ£¬ÌáÉýЧÄÜ¡£
±¾ÎÄÀ´×ÔÓÚÌÚѶ´ó½²Ìã¬ÓÉAlice±à¼­¡¢ÍƼö¡£

±³¾°

ÔÚ½ðÈÚÒµÎñÉÏ£¬ÖÊÁ¿ºÍÎȶ¨ÊÇÉúÃüÏߣ¬ÎÒÃÇÐèÒª¶ÔËùÓÐÒѾ­ÉÏÏßµÄ·ç¿ØÒªËØ£¬Èç²ßÂÔ¡¢Ä£ÐÍ¡¢±êÇ©¡¢ÌØÕ÷µÈ¹¹½¨¼à¿Ø¡£ÔÚ¹ýÈ¥£¬ÎÒÃDz¿Êð¼à¿ØµÄ·½Ê½Îª£º

·ç¿ØÒªËظºÔðͬѧÔÚÒªËØÉÏÏßǰ£¬Í¨¹ýspark\sqlÍê³É¶Ô¼à¿ØÖ¸±êµÄÔËËã²¢ÀýÐл¯£»

½«¼à¿ØÖ¸±êÔËËã½á¹û³ö¿âmysql\tbase£¬ÓÃÓÚÖ¸±êµÄչʾºÍ¸æ¾¯£»

¸æ¾¯ÏµÍ³ÂÖѯָ±êÊÇ·ñÒì³££¬ÈçÒì³£Ôòͨ¹ýÆóҵ΢ÐŵÈÍÆË͸澯ÏûÏ¢¡£

ÕâÖÖģʽÖ÷ÒªµÄÎÊÌâÔÚÓÚ£º

¿ª·¢Ãż÷¸ß£¬ÒªËظºÔðͬѧÐèÒªÕÆÎÕsparkÀëÏß¼ÆËã¡¢mysqlµÈÊý¾Ý¿âµÄÔöɾÊý¾Ý£¬»¹ÐèÒªÊÖ¶¯ÅäÖÃÀýÐл¯ÈÎÎñ£¬Ôڸ澯ϵͳÉϵǼÇ×¢²áµÈ£¬ºÄʱ·ÑÁ¦£»

ÖØ¸´¹¤×÷¶à£¬ÒªËØÖ¸±êÏàËÆ¡¢Öغ϶Ⱥܸߣ¬Èç¶àÊý·ç¿ØÒªËض¼Éæ¼°PSI¼ÆË㣬ֻÊǸ澯ãÐÖµ²»Ò»Ñù£»Ö¸±ê³ö¿â¡¢ÅäÖø澯µÈͬÑùÊÇÖØ¸´ÏàËÆ²Ù×÷¡£

ΪÁ˽â¾öÉÏÊöÎÊÌ⣬ÎÒÃÇÉè¼Æ¿ª·¢ÁËÒ»Ìס°Í³Ò»¼à¿Ø¼ÆËã¼ì²é¹¤¾ß¡±£¨ÒÔϼò³Æ¼à¿Ø¹¤¾ß£©£¬½«¼à¿Ø¼ÆËã²ð½â³É¼ÆËãÈÎÎñÉú³É¡¢¼à¿ØÖ¸±ê¼ÆËã¡¢¼à¿ØÖ¸±êÑÜÉúÓë¼ì²éµÈÄ£¿é£¬ÊµÏÖÓû§ÎÞÐè¶îÍ⿪·¢£¬Ö»ÐèÒª¼òµ¥µÄÅäÖü´¿ÉÍê³É¼à¿ØÖ¸±êµÄ¼ÆËãºÍÍÆËÍ£¬±ÜÃâÁËÈËÁ¦ÀË·Ñ£¬ÌáÉýЧÄÜ¡£

ÕûÌåÉè¼Æ

ϵͳ½»»¥ÊÓͼ

Óëͳһ¼à¿Ø¼ÆËãÓë¼ì²é¹¤¾ß½»»¥µÄÖ÷ÒªÓнÓÈë·½ºÍ¸æ¾¯ÏµÍ³£¬ËùÓÐµÄ¼à¿ØÓɽÓÈë·½·¢Æð£¬½ÓÈë·½¿ÉÒÔÊÇÌØÕ÷¡¢±êÇ©¡¢Ä£ÐÍ¡¢²ßÂԵ͵µ×¼ì²éͬѧ£¬Ò²¿ÉÒÔÊǾßÌåÒµÎñͬѧ¡£½ÓÈë·½Ìá³ö¼à¿ØÐèÇó£¨ÌîдÅäÖã©£¬Í³Ò»¼à¿Ø¼ÆËãÓë¼ì²é¹¤¾ß¸ù¾ÝÐèÇóÉú³É¼ÆËãÈÎÎñÍê³É¼ÆË㣬Èç¹û´¥·¢¸æ¾¯Ôòͨ¹ý¸æ¾¯ÏµÍ³½«¸æ¾¯·¢Ë͸ø½ÓÈë·½£¬½ÓÈë·½½ÓÊܸ澯ºó¼°Ê±ÐÞ¸´²¢·´À¡µÇ¼Ç£¬¼à¿Ø¹¤¾ß»á¶ÁÈ¡Óû§µÄ¸æ¾¯·´À¡ÖØÐÂÍê³ÉÏà¹Ø¼ÆË㣬ֱÖÁ¼à¿ØÖ¸±êÔڸ澯ãÐÖµÄÚ¡£

ΪÁËÍê³É¼à¿ØÖ¸±êµÄ¼ÆË㣬ͳһ¼à¿Ø¼ÆËãÓë¼ì²é¹¤¾ß¿ÉÒÔϸ·ÖΪÈý¸öºËÐÄÄ£¿é£¬·Ö±ðΪ£º

¼ÆËãÈÎÎñÉú³ÉÄ£¿é TaskMaker: ¸ù¾ÝÅäÖúͱ»¼à¿Ø±íµ÷¶ÈÖÜÆÚ£¨hour/day/month)¡¢Ê±¼äÆ«ÖÃÉú³É¼à¿ØÖ¸±ê¼ÆËãÈÎÎñ£¬TaskMaker½â¾öÁ˲»Í¬¼ÆËãÈÎÎñÀýÐл¯ÖÜÆÚ²»Í¬µÄÎÊÌ⣬ʹµÃÏÂÓÎÄ£¿é¿ÉÒÔרעÓÚ¼ÆËã±¾Éí¡£

¼à¿ØÖ¸±ê¼ÆËãÄ£¿é Calculator: ¶ÁȡδÍê³ÉµÄ¼ÆËãÈÎÎñ£¬¼ÆËãÏà¹Ø¼à¿ØÖ¸±ê¡£Calculatorͨ¹ýÉú³ÉÖ´Ðмƻ®²¢ÓÅ»¯µÄ·½Ê½£¬ºÏ²¢²»Í¬ÒµÎñͬѧ¶Ôͬһ±íµÄ¼à¿Ø¼ÆËãÐèÇó£¬ÌáÉý¼ÆËãЧÂÊ¡£

¼à¿ØÖ¸±êÑÜÉúÓë¼ì²éÄ£¿é Checker: ¶ÁÈ¡¼à¿ØÖ¸±ê¼ÆËã½á¹û£¬½øÐл·±È±ä»¯ÂʵÈÑÜÉú£¬È»ºó¶ÔÑÜÉú½á¹û½øÐмì²é£¬·µ»Ø¼ì²é½á¹û¡£

ÐèҪעÒâµÄÊÇ£¬ÎÒÃÇÌá³öÁË¡°¼à¿ØÖ¸±êÑÜÉúµÄ¸ÅÄ£¬½«²»ÒÀÀµÊý¾ÝÔ´±íÖ»ÒÀÀµ¼à¿ØÖ¸±ê¼°ÆäÀúÊ·¼Ç¼µÄÒ»ÀàÖ¸±ê³ÆÎª¡°ÑÜÉúÖ¸±ê¡±£¬½«ÑÜÉúÖ¸±êÑÓ³Ùµ½¼ì²éÆ÷CheckerÉϼÆË㣬¿ÉÒÔ½ÚÊ¡´óÁ¿¼ÆËã×ÊÔ´¡£¾ßÌåÀ´¿´£¬·ÇÑÜÉúÖ¸±êºÍÑÜÉúÖ¸±êµÄ²»Í¬ÔÚÓÚ£º

·ÇÑÜÉúÖ¸±ê¡£·ÇÑÜÉúÖ¸±ê¼´Ö¸±ê¼ÆËã½ö½öÒÀÀµÓÚÊý¾ÝÔ´±í£¬¶ø²»ÒÀÀµÓëÀúÊ·µÄ¼à¿ØÖ¸±ê£¬ÀýÈçPSIÖµ¡¢Ç¨ÒÆÂʵȣ¬ÕâЩָ±êÃèÊöÁË¼à¿ØÒªËØ·Ö²¼µÄ±ä»¯£¬Æä¼ÆËãÖ»ÒÀÀµÓÚÔ´±íµÄµ±Ç°ÖÜÆÚºÍ¶Ô±ÈÖÜÆÚÊý¾Ý£¬²»ÐèÒª¶Ô¼à¿ØÖ¸±ê½øÐÐÑÜÉú£¬ÈçPSI>0.1¼´¸æ¾¯¡£´ËÍâÈÎÎñ»ò±í״̬¼à¿Ø£¬ÈçÈÎÎñÍê³Éʱ¼ä¡¢±í·ÖÇø¼ÆÊýµÈÒ²Ö»ÒÀÀµÔ´±í£¬²»ÐèÒªÑÜÉú¡£·ÇÑÜÉúÖ¸±êÖ»ÄÜÓÉCalculatorÍê³É¼ÆË㣬ͨ³£ÐèÒª¶à´Î±éÀúÊý¾ÝÔ´±í£¬¼à¿ØËùÏûºÄµÄÖ÷Òª¼ÆËã×ÊÔ´¾ÍÊǼÆËã·ÇÑÜÉúÖ¸±êËùµ¼Ö¡£

ÑÜÉúÖ¸±ê¡£ÑÜÉúÖ¸±êÊÇÖ¸¶Ô¼à¿ØÖ¸±ê½øÐжþ´ÎÔËËãºóµÃµ½µÄ¼à¿ØÖ¸±ê£¬ÑÜÉúÖ¸±êµÄ¼ÆËã²»ÒÀÀµÔ´±í£¬Ö»ÒÀÀµ¼à¿ØÖ¸±ê¼°ÆäÀúÊ·¼Ç¼¡£ÀýÈçÁãÖµ¡¢È±Ê§ÖµÂÊ£¬ËüÃÇÊÇ·ÇÑÜÉúÖ¸±ê£¬ÐèÒªÒ»´Î±éÀú±í¼ÆËãµÃµ½£¬µ«ÎÒÃÇͨ³£²»Ö±½Ó¼à¿ØÁãÖµ¡¢È±Ê§ÖµÂÊ£¬ÒòΪ²»Í¬ÌØÕ÷ÉϱÈÂʶ¼²»Ò»Ñù£¬AÌØÕ÷¿ÉÄÜ5%£¬BÌØÕ÷¿ÉÄÜ10%£¬Ö±½Ó¶Ô±ÈÂÊÅäÖø澯µ¼ÖÂÿ¸öÌØÕ÷µÄãÐÖµ¶¼²»Ò»Ñù£¬ÅäÖø´ÔÓ£¬Òò¶øÎÒÃÇ¼à¿ØÁãֵȱʧֵÂʵIJ¨¶¯£¨¼´µ±Ç°ÖÜÆÚÁãֵȱʧֵ±ÈÂÊͬÆäËûÖÜÆÚµÄ²îÖµ£©£¬´ËʱËüÃÇÊÇÑÜÉúÖ¸±ê£¬ÒòΪ²¨¶¯µÄ¼ÆËãÖ»ÒÀÀµÓÚµ±Ç°ºÍ¶Ô±ÈÖÜÆÚµÄÁãÖµ¡¢È±Ê§Öµ±ÈÂÊ£¬Í¬Ê±¶Ô±ÈÖÜÆÚµÄ±ÈÂÊÔÚÀúÊ·ÈÎÎñÉϾÍÒѾ­Íê³É¼ÆË㣬¸´Óýá¹û¿ÉÒÔ½Úʡһ±¶ÒÔÉϵļÆËã×ÊÔ´£¬ÌáÉýЧÂÊ¡£

³ýÁ˺ËÐÄÄ£¿é£¬Í³Ò»¼à¿Ø¼ÆËãÓë¼ì²é¹¤¾ß»¹ÌṩÁË¡°·¢³ö¸æ¾¯Ö¸Á¡¢¡°½ÓÊܸ澯·´À¡ÖØÐÂÉú³É¼ÆËãÈÎÎñ¡±µÈ¸¨ÖúÄ£¿é¡£ÒÔÉϹ²Í¬×é³ÉÁËͳһ¼à¿Ø¼ÆËãÓë¼ì²é¹¤¾ß£¬È·±£´¥·¢µÄÒì³£¸æ¾¯Äܹ»µÃµ½¼°Ê±·´À¡ÐÞÕý¡£

²¿ÊðÊÓͼ

ÔÚʵ¼Ê²¿ÊðÉÏ£¬Í³Ò»¼à¿Ø¼ÆËãÓë¼ì²é¹¤¾ßÖÐTaskMaker£¨ÈÎÎñÉú³É£©¡¢Calculator£¨¼ÆË㣩¡¢Checker£¨¼ì²é£©µÈÄ£¿éʵ¼ÊÉ϶ÔÓ¦Ò»¸öSpark½Úµã£¬¸÷¸öÄ£¿éÖ®¼äÒÀÀµ¹ØÏµÈçÏÂͼËùʾ¡£

¼ÆËãÈÎÎñÖ÷ÒªÓÉTaskMakerÄ£¿é¸ù¾ÝÓû§ÅäÖÃÉú³É£¬´ËÍâÓû§·´À¡ÒѾ­ÐÞ¸´µÄ¸æ¾¯Ò²»áÖØÐÂÉú³É¼ÆËãÈÎÎñ£¬TaskMakerÆÁ±ÎÁ˲»Í¬µ÷¶ÈÖÜÆÚµÄÊý¾ÝÈÎÎñÉú³ÉÖÜÆÚ²»Ò»ÖµÄÎÊÌ⣬ÀýÈçÈÕ±íÈÎÎñÿÌìÉú³ÉǰһÌìµÄ±í¼à¿ØÈÎÎñ£¬Ô±íÈÎÎñÖ»ÔÚÿÔÂÌØ¶¨Ò»ÌìÉú³ÉÔ±íµÄ¼à¿ØÈÎÎñ£»Calculator½ÓÊܼÆËãÈÎÎñÍê³É¼à¿ØÖ¸±êµÄ¼ÆË㣬CalculatorÍê³É¼à¿ØµÄ¶àÊý¼ÆË㣬ÐèÒª½Ï¶àµÄ¼ÆËã×ÊÔ´£»CheckerÍê³É¼à¿ØÖ¸±êµÄÑÜÉúºÍ¼ì²é¡£

Ä£¿éÏêϸÉè¼Æ

½ÓÏÂÀ´£¬ÎÒÃÇÌÖÂÛ¼à¿Ø¹¤¾ßTaskMaker£¨ÈÎÎñÉú³É£©¡¢Calculator£¨¼ÆË㣩¡¢Checker£¨¼ì²é£©µÈÄ£¿éµÄÉè¼ÆÄѵ㡣

¼ÆËãÈÎÎñÉú³É£¨TaskMaker£©Ä£¿é

¼ÆËãÈÎÎñÉú³É£¨TaskMaker£©Ä£¿éºËÐÄÂß¼­ÊÇ:

½âÎöÅäÖñí (ÅäÖñí×ֶμûϱí)£»

¸ù¾ÝÅäÖñíÖÐschedule_typeµ÷¶ÈÖÜÆÚºÍschedule_biasÆ«Öã¬Éú³ÉÐèÒª¼ì²é±íµÄ·ÖÇø£¨partition_name£©,½«Ô´±íÐÅÏ¢£¨table_name¡¢col_name¡¢partition_name£©ºÍ¼ÆËãÐÅÏ¢£¨cal_procedure¡¢kwargs£©Ð´»Ø¡£

TaskMakerµÄÖ÷ÒªÉè¼ÆÄѵãÔÚÓÚ£ºÐèÒª´¦Àí¼à¿ØÈÎÎñµ÷¶ÈÖÜÆÚÓëÔ´±í¼ÆËãÈÎÎñµ÷¶ÈÖÜÆÚµÄ²î±ð£¬ÊÊÅäºÃhour/day/week/monthµÈ²»Í¬ÖÜÆÚ£¬¿ÉÒÔ×ܽáΪÏÂ±í£º

¼ÙÉ赱ǰÊý¾Ýʱ¼äÊÇ20210210 11:00£¬ÒòΪµ÷¶Èϵͳ¶ÔÈÕÈÎÎñͨ³£ÓÐÒ»ÌìµÄÆ«ÒÆ£¬´Ëʱʵ¼ÊÖ´ÐÐʱ¼äΪ20210211 11:00£¬¶ÔÓÚ²»Í¬ÀàÐ͵ÄÔ´±íÖÜÆÚ£¬Æ«ÖúÍ×îÖÕÉú³É·ÖÇø¾ÙÀýÈçÏ£º

hour: Èç¹ûÆ«ÖÃÊÇ-1£¬Ôò¼ì²é·ÖÇøºÍµ±Ç°Êý¾Ýʱ¼äÒ»Ö£¬Îª20210210 11:00£¬Èç¹ûÊÇ-2£¬Ôò¼ì²é·ÖÇøÌáǰһСʱ£¬Îª20210210 10:00£»

day£ºÈç¹ûÆ«ÖÃÊÇ-1£¬Ôò¼ì²é·ÖÇøºÍµ±Ç°Êý¾Ýʱ¼äÒ»Ö£¬Îª20210210£¬Èç¹ûÊÇ-2£¬Ôò¼ì²é·ÖÇøÌáǰһÌ죬Ϊ20210209£»

week: Èç¹ûÆ«ÖÃÊÇ-1£¬´ú±í¼ì²éÉÏÒ»ÖÜ£¬µ«ÊÇÒòΪµ±ÌìÊÇÖÜÈý£¬²»Éú³ÉÖܼÆËãÈÎÎñ£»

month£ºÈç¹ûÆ«ÖÃÊÇ-10£¬Éú³ÉÉÏÔ¼ÆËãÈÎÎñ202101£¬Èç¹û²»ÊÇ-10£¬Ôò²»Éú³ÉÔ¼ÆËãÈÎÎñ£¬×¢Òâµ½Çø±ðÓÚСʱ±í¡¢ÈÕ±í¡¢ÖÜ±í£¬Æ«ÖÃͨ³£±íÊ¾Æ«ÒÆÈô¸É¸öÖÜÆÚ£¬µ«ÊÇÔ±íÀýÍ⣬Ô±íµÄÆ«Öôú±í¡°¼¸ºÅ¿ªÊ¼¼ÆËãÈÎÎñ¡±¡£

Ô´±íÈÕ±í¡¢Ô±íµÈ²»Í¬µ÷¶ÈÖÜÆÚµÄÎÊÌâÔÚTaskMakerÄ£¿é½â¾ö£¬ºóÐøÄ£¿é²»ÔÙ¸ÐÖªÔ´±íÖÜÆÚµÄÇø±ð£¬×¨×¢Íê³É¼à¿ØÖ¸±êµÄ¼ÆËã¡£

¼à¿ØÖ¸±ê¼ÆË㣨Calculator£©Ä£¿é

¼à¿ØÖ¸±ê¼ÆË㣨Calculator£©Ä£¿éºËÐÄÂß¼­£¨ÈçÏÂͼ£©ÊÇ£º

¶ÁȡδÍê³ÉµÄ¼ÆËãÈÎÎñ£»

ͨ¹ýÉú³ÉÖ´Ðмƻ®²¢ÓÅ»¯µÄ·½Ê½£¬ºÏ²¢²»Í¬ÒµÎñͬѧ¶Ôͬһ±íµÄ¼à¿Ø¼ÆËãÐèÇó£¬ÌáÉý¼ÆËãЧÂÊ£¬Calculator»á²úÉúÈý¸ö×ֶΣ¬·Ö±ðΪ£º

cal_time£º±£´æ¼ÆËãʱ¼ä

cal_outputs£º±£´æ¼ÆËã½á¹û£¬json¸ñʽ

cal_errors£º±£´æ¼ÆËãÒì³£´íÎóÐÅÏ¢

Ê×ÏÈ£¬ÎÒÃÇͨ¹ýʵÀýÀ´½âÊÍÈçºÎͨ¹ýÖ´ÐÐÓÅ»¯±ÜÃâÖØ¸´¼ÆË㣬ÌáÉýÐÔÄÜ£º

ͬѧ1µÄÒµÎñÐèÒª¼ì²étable±íµÄAÁеÄpsi

ͬѧ2µÄÒµÎñÐèÒª¼ì²étable±íµÄBÁеÄpsi

ͬѧ3µÄÒµÎñÐèÒª¼ì²étable±íµÄCÁÐȱʧÂÊÕ¼±È

¼ÆËãpsiÐèÒª3´Î±éÀú±í£¬¼ÆËãȱʧÂÊÐèÒª1´Î±éÀú±í£¬¹²¼ÆÐèÒª3+3+1=7´Î±éÀú

¶øÊµ¼ÊÉ϶¼ÊǶÔͬһtable±íµÄ±éÀú£¬¿ÉÒԺϲ¢£¬ÈçÏÂͼ£¬´ËʱֻÐèÒª3´Î±éÀú£¬¿ÉÒÔ½Úʡһ±¶ÒÔÉϵÄʱ¼ä

ΪÁËʵÏÖÖ´ÐÐÓÅ»¯£¬ÎÒÃÇÐèÒª½«Ò»¸ö¼à¿ØÖ¸±êµÄ¼ÆËã¹ý³Ì²ð½âΪÈô¸É¸ö×îС¿ÉÖ´Ðе¥Ôª£¬³ÆÖ®Îªº¯Êý¡£¾ßÌ嵽ʵÏÖÉÏ£¬º¯Êý±£´æÁ˼ÆËãÂß¼­µÄʵÏÖ´úÂ룬¹ý³Ìµ÷ÓÃÈô¸É¸öº¯ÊýÍê³É¼à¿ØÖ¸±êµÄ×îÖÕ¼ÆË㣬ÈçÏ£º

# Function
def F:RDD_aggre(...): ...
def F:math_psi(...): ...

# Procedure
def P:psi(...):
seg = F:RDD_aggre('cal_seg', ...)
cur = F:RDD_aggre('count@cur', seg, ...)
his = F:RDD_aggre('count@-1', seg, ...)
psi = F:math_psi(cur, seg, ...)
return psi

ÉÏÊö¼ÆËã¹ý³Ì¿ÉÒÔת»»³É¼ÆËãͼDAGÀ´±íʾ£¬ÈçÏÂͼ£º

¸ü¸´Ôӵ쬵±Óжà¸ö¼à¿Ø¼ÆËã¹ý³Ìʱ£¬DAG¿ÉÒÔ±íʾΪ£º

DAGÐèÒªÖ´ÐеIJ¿·ÖΪҶ×ӽڵ㣬ΪÁ˱ÜÃâÖØ¸´¼ÆË㣬

ÎÒÃǶÔÿ´ÎÖ´ÐеÄÒ¶×Ó½Úµã½øÐÐÁ½ÀàÀàÓÅ»¯£º

ºÏ²¢Í¬Ãûº¯Êý£¬µ±º¯ÊýÃûºÍ²ÎÊý¶¼ÍêȫһÖÂʱ£¬ºÏ²¢º¯Êý£¬½öÖ´ÐÐÒ»´Î£»µ±º¯ÊýÃûÒ»Ö¡¢²ÎÊý²»Ò»Ö£¬Éú³ÉеÄÖ´Ðк¯Êý£¨Ö÷ÒªÕë¶ÔRDD aggregate²Ù×÷£©£¬Í¬Ñù½øÖ´ÐÐÒ»´Î¡£

»º´æ¼ÆËã½á¹û£¬»º´æº¯Êý½á¹û£¬µ±ÐèÒªÔٴμÆËãÏàͬº¯Êýʱ£¬Ö±½Ó´Ó»º´æ¶ÁÈ¡½á¹û¡£

ÀýÈ磬ÉÏÊöDAGÒ¶×Ó½Úµã±íʾµÄ¿ÉÖ´Ðк¯Êý(Ò¶×ӽڵ㣩Ϊ£ºF:RDD_aggre£¨cal_seg£¬±í1£¬AÁУ©¡¢F:RDD_aggre£¨cal_seg£¬±í1£¬AÁУ©¡¢F:RDD_aggre£¨null_rate£¬±í1£¬BÁУ©£¬ÆäÖÐÁ½¸öF:RDD_aggre£¨cal_seg£¬±í1£¬AÁУ©ÎªÍ¬Ãûͬ²Îº¯Êý£¬ºÏ²¢ÎªÒ»¸öÖ´ÐУ¬ÓÖF:RDD_aggre£¨cal_seg£¬±í1£¬AÁУ©ÓëF:RDD_aggre£¨null_rate£¬±í1£¬BÁУ©ÊÇͬÃûº¯Êý£¬¿ÉÒԺϲ¢Ö´ÐÐF:RDD_aggre£¨[cal_seg, null_rate]£¬[±í1, ±í1]£¬[AÁÐ, BÁÐ]£©,´Ëʱԭ±¾ÐèÒªÐèÒªÈý´Î±éÀú±í£¬ºÏ²¢ÎªÒ»´Î±éÀú±í¼´¿ÉÍê³É¡£

ͬÑùµÄ£¬ÔÚµÚ¶þ²ãÒ¶×ӽڵ㺯ÊýF:RDD_aggre£¨count@cur£¬seg, ±í1£¬AÁУ©¿ÉÒԺϲ¢ÎªÒ»´ÎÖ´ÐУ¬µ«F:RDD_aggre£¨count@-1, seg£¬±í1£¬AÁУ©¡¢F:RDD_aggre£¨count@-6, seg£¬±í1£¬AÁУ©ÐèÒª·Ö±ð±éÀú²»Í¬µÄ±í·ÖÇø£¨ÉÏÒ»ÖÜÆÚ·ÖÇø¡¢Ç°6ÖÜÆÚ·ÖÇø£©£¬Òò¶øÖ»ÄÜ·Ö±ð¼ÆË㣬µÚ¶þ²ãÒ¶×ӽڵ㹲²úÉúÈý´Î±éÀú±í£¬ÈçÏ£º

×îÖÕ£¬À­È¡·Ö¶Î¼ÆÊý£¬ÔÚ±¾µØÍê³ÉPSIµÄ¼ÆË㣺

×ÛÉÏ£¬Ö´ÐÐÓÅ»¯Ë㷨С½áÈçÏ£º

Ëã·¨: Ö´ÐÐÓÅ»¯Ëã·¨¡£

ÊäÈ룺µ±Ç°È«²¿Î´Ö´ÐмÆËãÈÎÎñ¶ÔÓ¦¼ÆËã¹ý³Ì¡£

Á÷³Ì£º

- Step1. ½«¼ÆËã¹ý³Ìת»¯³ÉDAG±íʾ£¬Ã¿¸ö½ÚµãΪһ¸öÖ´Ðк¯Êý¡£

- Step2. Èç¹ûµ±Ç°»¹´æÔÚδִÐеÄÒ¶×ӽڵ㣬ÄÇôºÏ²¢Ò¶×Ó½ÚµãÖеÄͬÃûº¯Êý£¬µ±º¯ÊýÃûºÍ²ÎÊý¶¼ÍêȫһÖÂʱ£¬ºÏ²¢º¯Êý£»µ±º¯ÊýÃûÒ»Ö¡¢²ÎÊý²»Ò»Ö£¬Éú³ÉеÄÖ´Ðк¯Êý¡£

- Step3. Ö´Ðк¯Êý£¬Èç¹û»º´æÖдæÔÚ½á¹û£¬Ö±½ÓÀ­È¡½á¹û£¬·ñÔòÍê³É¼ÆËãºó»º´æ½á¹û¡£

- Step4. Èô»¹´æÔÚδִÐеÄÒ¶×ӽڵ㣬·µ»ØStep2£¬·ñÔòÖÕÖ¹¡£

Êä³ö£º¼ÆËã¹ý³Ì¶ÔÓ¦µÄ¼à¿ØÖ¸±ê½á¹û¡£

µ±Ç°£¬CalcutorÖ§³Ö³£¼û¼à¿ØÖ¸±ê°üÀ¨£º

ͨ¹ýCalcutorÄ£¿é¿ÉÒÔÍê³É¼à¿ØÖ¸±êµÄ¼ÆË㣬µ«Ò²´æÔÚһЩ¼à¿ØÖ¸±ê£¨Èç¿ÕÖµÕ¼±È£©ÐèÒªÑÜÉúºó²ÅÄÜÅжÏÊÇ·ñÒì³££¬Òò¶øÎÒÃÇÉè¼ÆÁËCheckerÄ£¿é¡£

¼à¿ØÖ¸±êÑÜÉúÓë¼ì²é£¨Checker£©Ä£¿é

¼à¿ØÖ¸±êÑÜÉúÓë¼ì²é£¨Checker£©Ä£¿éºËÐÄÂß¼­Îª£º

¶Áȡδ¼ì²éµÄ¼à¿ØÖ¸±ê£»

°´gen_proceduresÑÜÉúÂß¼­ÖÐÅäÖ÷½·¨¶Ô¼à¿ØÖ¸±êÑÜÉúºó£¬°´check_strategies¼ì²éÂß¼­ÖÐÅäÖ÷½·¨¶Ô¼à¿ØÖ¸±ê¼ì²é£»

Checker»á²úÉúÎå¸ö×ֶΣ¬·Ö±ðΪ£º

check_time £º±£´æ¼ÆËãʱ¼ä

gen_outputs £º±£´æÑÜÉú£¬json¸ñʽ

gen_errors £º±£´æÑÜÉúÒì³£´íÎóÐÅÏ¢

check_pass£º¼ì²éÊÇ·ñͨ¹ý

check_details£º±£´æÎ´Í¨¹ýÔ­Òò£¬½ÓÈ뷽ͬѧÐè¹Ø×¢check_pass¡¢check_details×Ö¶Î

CheckerµÄÑÜÉú·½·¨°üÀ¨£º

Íê³ÉÑÜÉúºó£¬ÐèÒªÅжÏÖ¸±êÊÇ·ñÒì³££¬ÕâÊÇͨ¹ý¼ì²éãÐֵʵÏֵ쬳£¼ûµÄ¼ì²éÂß¼­ÓУº

¾Ù¸öÀý×Ó£¬Èç¹ûÒª¶ÔȱʧÂʲ¨¶¯½øÐÐ¼à¿Ø£¬ÒªÇóÆä±ä»¯·ù¶ÈСÓÚ0.1£¬²¢Çұ仯ÂÊСÓÚ0.2£¬¿ÉÒÔ½«Ö¸±êÑÜÉúÅäÖÃΪ diff@-1¡¢relative@-1£¬Ö¸±ê¼ì²é²ßÂÔÅäÖÃΪ abs_less_than@0.1 ¡¢ abs_less_than@0.2 ¡£

¼à¿Ø¼ÆËãÓÅ»¯ÊµÀý - PSI¼ÆËã´Ó20hµ½2h

ÔÚÎÒÃǵÄʵ¼ùÖУ¬·¢ÏÖ¶Ô6w¸öÊý¾ÝÁеÄpsiµÈ4¸ö¼à¿ØÖ¸±êµÄ¼ÆË㣬½öÈÕ±í¼à¿Ø¼ÆËãºÄʱ³¤´ï20h+ £¬¼ÆËãºÄʱ¹ý´ó£¬³¤Ê±¼äÕ¼Óü¯Èº×ÊÔ´Ò²»áµ¼ÖÂÏßÉÏÈÎÎñÑÓ³Ù¡£ÎÒÃÇ·ÖÎöÁËÔì³É¼ÆËãʱ¼ä³¤µÄÔ­ÒòÓУº

²¿·Ö¼à¿ØÖ¸±êÈçPSI¼ÆËãÉæ¼°¶à´Î±éÀú±í£»

Pyspark Ô­ÉúRowÊôÐÔ·ÃÎÊЧÂʲ

²¿·Ö³¬´ó±íÐÐÊý´ïµ½20ÒÚ+¡£

Õë¶ÔÕâЩÎÊÌ⣬ÎÒÃÇÌá³öÁËÏÂÊö·½°¸ÖðÒ»½â¾ö¡£

PSI¼ÆËãÓÅ»¯£º´Ó4´Î±éÀú±íµ½Ò»´Î±éÀú±í

Ïà±Èȱʧֵռ±È¡¢ÁãÖµÕ¼±ÈÖ»ÐèÒ»´Î±éÀú±í£¬¼ÆËãpsi@-1¡¢psi@-6×ܹ²ÐèÒª4´Î±éÀú±í£¬¾ßÌåÈçÏ£º

±éÀúµ±Ç°ÖÜÆÚ»ñÈ¡·Ö¶Îsegs£»

¸ù¾Ý·Ö¶Îsegs±éÀúµ±Ç°ÖÜÆÚ»ñÈ¡·Ö¶Î¼ÆÊý£»

¸ù¾Ý·Ö¶Îsegs±éÀú-1ÖÜÆÚ»ñÈ¡·Ö¶Î¼ÆÊý£¬¼ÆËãpsi@-1£»

¸ù¾Ý·Ö¶Îsegs±éÀú-6ÖÜÆÚ»ñÈ¡·Ö¶Î¼ÆÊý£¬¼ÆËãpsi@-6¡£

ΪÁ˽µµÍPSIµÄ±éÀú´ÎÊý£¬ÎÒÃÇÉè¼ÆÁËÒ»ÖÖ»ùÓÚÖ±·½Í¼µÄPSI¹ÀËã·½·¨£¬Í¨¹ýÒ»´Î±éÀú±í£¬µÃµ½ÌØÕ÷·Ö²¼Ö±·½Í¼£¬ÔÙ½áºÏÀúÊ·ÉϼÆËãµÄÆäËûÖÜÆÚÌØÕ÷·Ö²¼Ö±·½Í¼£¬¾Í¿ÉÒÔ¹ÀËã³öPSI¡£

ÈçÏÂͼËùʾ£¬»ùÓÚÖ±·½Í¼µÄPSI¹ÀËã·½·¨Ö÷Òª°üÀ¨4¸ö²½Ö裺

- ²½ÖèÒ»£º±éÀúÒ»´Î±í£¬Ê¹ÓÃÐîË®³Ø²ÉÑùÊý¾Ý£¨>10w)£¬±¾µØ¼ÆËã·Ö¶Î¡¢Í³¼Æ¸÷¸ö·Ö¶Î¼ÆÊý£¬µÃµ½ÌØÕ÷µÄÖ±·½Í¼·Ö²¼h1£¬ÈçÏÂͼ£»

- ²½Öè¶þ£º´ÓÀúÊ·½á¹ûÖÐÀ­È¡-nÖÜÆÚµÄÖ±·½Í¼·Ö²¼h2£»

- ²½ÖèÈý£ºÓÉÓÚ¡°·Ö¸îµã¡±²»Ò»Ö£¬ÎÒÃÇÎÞ·¨Ö±½Ó¸ù¾ÝÖ±·½Í¼¼ÆËãPSI£¬Òò´Ë¶ÔÖ±·½Í¼½øÐзָʹµÃµ±Ç°ÖÜÆÚÖ±·½Í¼ºÍÉÏÒ»ÖÜÆÚÖ±·½Í¼µÄ·Ö¸îµãÒ»Ö£¬È¡h1¡¢h2Ö±·½Í¼·Ö¸îµãµÄ²¢¼¯×÷Ϊзָîµã£¬°´ÕÕеķָîµãÖØÐ»®·ÖÖ±·½Í¼µÃµ½h1`¡¢h2`£»

- ²½ÖèËÄ£º¸ù¾Ý·Ö¸ôºóµÄÖ±·½Í¼h1`¡¢h2`ºÍPSI¼ÆË㹫ʽ¼ÆËãPSI¼´¿É¡£

ͨ¹ýPSI¼ÆËãÓÅ»¯£¬¼ÆËãʱ¼ä´Ó20h -> 7h¡£

Pyspark RowÊôÐÔ·ÃÎÊÓÅ»¯

ÎÒÃÇ·¢ÏÖPysparkʵÏÖµÄRow·ÃÎÊÊôÐÔÓÐЧÂÊÎÊÌ⣨ÈçÏÂͼ£¬¹Ù·½Ô´Âë×¢ÊÍÒ²³ÐÈÏÁËÕâÒ»ÎÊÌ⣩£¬row['field']ÐèÒª±éÀúËùÓеÄÁÐÃû£¬²ÅÄܵõ½ÕýÈ·µÄϱ꣬Æäʱ¼ä¸´ÔÓ¶ÈÊÇO(n)¡£

ΪÁ˽â¾örow·ÃÎÊËٶȵÄÎÊÌ⣬ÎÒÃÇÌá³öÁËÏÂÊö·½°¸£º

¹ã²¥[ÁÐÃû->ÁÐϱê]Map£ºfield_map = broadcast(field_map)

ËùÓÐÓÃrow['field']µÄµØ·½£¬ ¶¼¸Ä³É row[feld_map.value['field']]

ͨ¹ýʹÓÃÁËÉÙÁ¿µÄÄÚ´æ´æ´¢[ÁÐÃû->ÁÐϱê]Ó³É䣬¼´Äܽ«RowÊôÐÔ·ÃÎʸ´ÔÓ¶È´ÓO(n) -> O(1)£¬×îÖÕʵÑéÖ¤Ã÷¼ÆËãʱ¼ä´Ó7h -> 4h¡£

³¬´ó±íµÄÓÅ»¯£º²ÉÑùÓë±ÜÃâÐòÁл¯

ÎÒÃǹ۲쵽£¬Ä¿Ç°´æÔÚÉÙÁ¿¼à¿Ø±íÐÐÊý´ïµ½20ÒÚ+£¬ÀúÊ·Ô­ÒòÆä¸ñʽΪformat£¨ÂýÓÚorcfile£©£¬ÕâЩ±íÈ«±í±éÀú¼ÆËã¼à¿ØÖ¸±êµÄʱ¼ä´ïµ½Êý¸öСʱ¡£

Õë¶ÔÕâÖÖ³¬´ó±í£¬ÎÒÃÇÌá³öÁ˲ÉÑùºÍ±ÜÃâÐòÁл¯µÄÓÅ»¯·½·¨£¬¾ßÌåÀ´Ëµ£º

²ÉÑù£¬¼´¶ÔÐÐÊý´óÓÚ1Òڵıí²ÉÑù£¬¿ØÖÆÐÐÊýÔÚÒ»ÒÚÄÚ£¬ÐèҪעÒâµÄÊÇ£¬ÎªÁ˱£Ö¤²ÉÑùЧÂÊ£¬ÎÒÃÇʹÓÃwhere×Ó¾äÍê³É²ÉÑù£ºwhere rand(123) < Ò»ÒÚ/±íÐÐÊý£»

±ÜÃâÐòÁл¯£¬¼´Í¨¹ýDataFrame API where »ò select×Ó¾äɸѡ²»Ê¹ÓõÄÐлòÁУ¬±ÜÃâËüÃÇÐòÁл¯µ½Python¶ÔÏó¡£

ͨ¹ýÉÏÊöÓÅ»¯£¬¶ÔÓÚ20ÒÚ+ÐÐÊýµÄ´ó±í¼ÆËãʱ¼ä´ÓÊý¸öСʱµ½¼¸Ê®·ÖÖÓ£¬²¢×îÖÕʵÏÖ×ÜÌ弯Ëãʱ¼ä´Ó20h -> 2hµÄÓÅ»¯¡£

С½á

Õë¶Ô½ðÈÚ·ç¿ØÒªËØ¼à¿ØµÄ¡°¿ª·¢Ãż÷¸ß¡±¡°Öظ´¹¤×÷¶à¡±µÈÎÊÌ⣬±¾ÎÄÌá³öÁË¡°Í³Ò»¼à¿Ø¼ÆËãÓë¼ì²é¹¤¾ß¡±ÕâÒ»½â¾ö·½°¸£¬±¾ÎÄÏêϸÂÛÊöÁ˸÷½°¸TaskMaker¡¢ Calculator¡¢ CheckerµÈ¸÷¸öÄ£¿éµÄÉè¼ÆÊµÏÖ£¬×îÖÕʵÏÖÁËÓû§ÎÞÐè¶îÍ⿪·¢£¬Ö»ÐèÒª¼òµ¥µÄÅäÖü´¿ÉÍê³É¼à¿ØÖ¸±êµÄ¼ÆËãºÍÍÆËÍ£¬±ÜÃâÁËÈËÁ¦ÀË·Ñ£¬ÌáÉýЧÄÜ¡£×îºó£¬ÎÒÃÇ»¹¸ø³öÁËÒ»¸ö¡°¼à¿Ø¼ÆËãÄ£¿é¡±ÓÅ»¯µÄʵÀý£¬Í¨¹ý¡°Ö±·½Í¼¹ÀËãPSI¡±¡¢¡°RowÁÐÃû¹ã²¥¡±¡¢¡°²ÉÑùÓë±ÜÃâÐòÁл¯¡±µÈ·½Ê½£¬½«¼à¿Ø¼ÆËãµÄËÙÂÊÌáÉýÁË10±¶£¬½ÚÊ¡ÁË´óÁ¿¼ÆËã×ÊÔ´¡£

 
   
2613 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

΢·þÎñ²âÊÔÖ®µ¥Ôª²âÊÔ
һƪͼÎÄ´øÄãÁ˽â°×ºÐ²âÊÔÓÃÀýÉè¼Æ·½·¨
È«ÃæµÄÖÊÁ¿±£ÕÏÌåϵ֮»Ø¹é²âÊÔ²ßÂÔ
È˹¤ÖÇÄÜ×Ô¶¯»¯²âÊÔ̽Ë÷
Ïà¹ØÎĵµ

×Ô¶¯»¯½Ó¿Ú²âÊÔʵ¼ù֮·
jenkins³ÖÐø¼¯³É²âÊÔ
ÐÔÄܲâÊÔÕï¶Ï·ÖÎöÓëÓÅ»¯
ÐÔÄܲâÊÔʵÀý
Ïà¹Ø¿Î³Ì

³ÖÐø¼¯³É²âÊÔ×î¼Ñʵ¼ù
×Ô¶¯»¯²âÊÔÌåϵ½¨ÉèÓë×î¼Ñʵ¼ù
²âÊԼܹ¹µÄ¹¹½¨ÓëÓ¦ÓÃʵ¼ù
DevOpsʱ´úµÄ²âÊÔ¼¼ÊõÓë×î¼Ñʵ¼ù
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
´óÊý¾Ýƽ̨²âÊÔ
΢·þÎñ¼Ü¹¹ÏµIJâÊÔÖ®µÀ
´ÓÁã¿ªÊ¼ÕÆÎÕ΢·þÎñÈí¼þ²âÊÔ
ÈçºÎ½øÐвâÊÔÐèÇó·ÖÎö£º´Ó½ÓÊÕÐèÇóµ½ÓÃÀýÉè¼Æ
python_selenium×Ô¶¯»¯²âÊÔ¿ò¼Ü
×îпγÌ
²âÊÔÐèÇó·ÖÎöÓë²âÊÔÓÃÀýÉè¼Æ
ÐÔÄܲâÊÔ·½·¨Óë¼¼Êõ
×Ô¶¯»¯²âÊÔ¿ò¼ÜÉè¼Æ¸ß¼¶Êµ¼ù
½Ó¿Ú×Ô¶¯»¯²âÊÔ·½·¨Ó빤¾ß
Èí¼þ²âÊÔ·½·¨Óëʵ¼ù(¹á´©°¸Àý)
³É¹¦°¸Àý
ij֧¸¶ÆóÒµ µ¥Ôª²âÊÔÓëÖØ¹¹Åàѵ
±±¾© Óû§ÌåÑé¡¢¿ÉÓÃÐÔ²âÊÔÓëÆÀ¹À
ij¾ü¹¤Ñо¿µ¥Î» ×Ô¶¯»¯²âÊÔ·½·¨¡¢°¸ÀýÓ빤¾ß
ÖªÃûÏû·Ñ½ðÈÚ¹«Ë¾ ̽Ë÷ÐÔ²âÊÔÓë²âÊÔ·ÖÎö
±±¾© º½Ìì¿Æ¹¤Ä³×Ó¹«Ë¾ Èí¼þ²âÊԼܹ¹Ê¦