µÚÒ»ÕÂ֪ʶ»ØÊ×Óë±¾ÕÂÖØµãÏνÓ
ÔÚ×ÏÌÙׯ԰SparkϵÁн̵̳ÄÊ×ÕÂÖУ¬ÎÒÃǽ¨ÉèÁË»ù´¡¿ª·¢ÇéÐβ¢Íê³ÉÁËÊý¾ÝÊÕÂÞ¡£±¾Ðò´Î2ÕÂ×îÐÂÊÓÆµ×ÅÖØÕ¹Ê¾RDD£¨µ¯ÐÔÂþÑÜʽÊý¾Ý¼¯£©ºÍDataFrame£¨½á¹¹»¯Êý¾ÝÁýͳ£©ÔÚÂþ»Êý¾Ý´¦Öóͷ£ÖеÄÐͬӦÓá£Í¨¹ýBilibiliÂþ»ÕæÊÊÓû§»ÏñÊý¾Ý£¬½Ì³ÌÑÝʾÁËÔõÑùʵÏÖÍòÍò¼¶Âþ»±êÇ©µÄ¿ìËÙÏ´åªÓëͳ¼Æ£¬ÕâÕýÊǹ¹½¨ÍƼöϵͳµÄÒªº¦Ô¤´¦Öóͷ£°ì·¨¡£
Âþ»ÌØÕ÷¹¤³ÌÈ«Á÷³Ì½âÃÜ
ÊÓÆµÖÐÌØÊâÒýÈËעĿµÄÊÇSpark MLlibÔÚÌØÕ÷ÌáÈ¡ÖеÄÓ¦ÓÃʵ¼ù¡£Õë¶ÔÂþ»Æ½Ì¨µÄ¶àÔª»¯Êý¾Ý£¨°üÀ¨ÔĶÁʱ³¤¡¢µãÔÞÐÐΪ¡¢¸¶·Ñ¼Í¼µÈ£©£¬½²Ê¦ÏêϸÑÝʾÁËÔõÑù¹¹½¨TF-IDFÌØÕ÷¾ØÕó£¨´ÊÆµ-ÄæÎĵµÆµÂÊͳ¼ÆÒªÁ죩¡£ÄãÊÇ·ñÒÉÐÄÓÚº£Á¿Âþ»±êÇ©µÄ¹ØÁªÆÊÎö£¿½Ì³ÌÌá³öµÄ»ùÓÚFP-GrowthËã·¨µÄƵÈÔÏÍÚ¾ò¼Æ»®£¬ÄÜÓÐÓ÷¢Ã÷Óû§Æ«ºÃµÄÂþ»×éºÏ¼ÍÂÉ¡£
ÂþÑÜÊ½ÍÆ¼öË㷨ʵÏÖϸ½Ú
ÔÚÂþ»ÍƼö³¡¾°Ï£¬ÊÓÆµÉîÈë½â˵ÁËÐͬ¹ýÂËËã·¨ÔÚSparkÂþÑÜʽ¼¯ÈºÉϵÄʵÏÖÔÀí¡£ÌØÊâÖµµÃ¹Ø×¢µÄÊǽÓÄÉALS£¨½»Ìæ×îС¶þ³Ë·¨£©´¦Öóͷ£Óû§-Âþ»ÆÀ·Ö¾ØÕóµÄÕ½ÂÔ¡£½Ì³ÌչʾÁËÔõÑùÔÚBilibiliÂþ»°ÙÒÚ¼¶Óû§ÐÐΪÊý¾ÝÖУ¬Í¨¹ýºÏÀíµÄ·ÖÇøÉè¼Æ£¨Partition Strategy£©½«ÅÌËãºÄʱ½µµÍ63%£¬ÕâÖÖÐÔÄÜÓÅ»¯¶ÔÊµÊ±ÍÆ¼öϵͳÓÈΪÖ÷Òª¡£
ʵʱÊý¾Ý´¦Öóͷ£ÓëÐÔÄܵ÷ÓÅ
µÚ2ÕÂ×îиüÐÂÕ½ÚÐÂÔöÁËStructured StreamingÓ¦Óð¸Àý¡£Í¨¹ýÄ£ÄâÂþ»Æ½Ì¨µÄʵʱÔĶÁÊý¾ÝÁ÷£¬½Ì³ÌÑÝʾÁËÔõÑùʵÏÖ·ÖÖÓ¼¶¸üеÄÂþ»ÈȶȰñµ¥¡£Õë¶Ôпª·¢Õß³£¼ûµÄOOM£¨ÄÚ´æÒç³ö£©ÎÊÌ⣬½²Ê¦ÌØÊâÖ¸³öºÏÀíÉèÖÃexecutorÄÚ´æ²ÎÊýÓëÐòÁл¯·½·¨£¬ÕâÊÇÈ·±£Spark×÷ÒµÎȹÌÔËÐеÄÒªº¦ÉèÖá£
ÏîĿЧ¹ûÓëÉÌÒµ»¯Ó¦ÓÃÑéÖ¤
ͨ¹ýÍêÕû¸´ÏÖBilibiliÂþ»ÍƼöϵͳµÄ½¹µãÄ£¿é£¬¸ÃSparkʵ¼ùÏîÄ¿ÒÑʵÏÖµã»÷ÂÊÕ¹Íû׼ȷÂÊ82%µÄÉÌÒµ»¯»ù×¼¡£ÊÓÆµ×îºó´¦Õ¹Ê¾µÄA/B²âÊÔ£¨±ÈÕÕÊÔÑ飩Êý¾ÝÅú×¢£¬ÐÂÍÆ¼öË㷨ʹƽ̨Óû§ÈÕ¾ùÔĶÁʱ³¤ÌáÉý27%¡£ÕâÖÖ´ÓʵÑéÇéÐε½Éú²úϵͳµÄǨáãÂÄÀú£¬ÕýÊDZ¾½Ì³ÌÇø±ðÓÚͬÀà¿Î³ÌµÄ½¹µã¼ÛÖµ¡£
±¾´Î×ÏÌÙׯ԰Sparkʵ¼ùÊÓÆµµÚ2ÕÂ×îÐÂÄÚÈÝ£¬Í¨¹ýBilibiliÂþ»ÕæÊµÓªÒµ³¡¾°µÄÍêÕû»¹Ô£¬¹¹½¨ÁËÂþÑÜʽÅÌËã¿ò¼ÜÓ뻥ÁªÍø²úÆ·µÄÊÖÒÕÇÅÁº¡£½Ì³ÌÖÐÑÝʾµÄÊý¾Ý´¦Öóͷ£·¶Ê½¡¢Ë㷨ʵÏÖ¼¼ÇÉÓëÐÔÄܵ÷Óżƻ®£¬Îª¿ª·¢ÕßÌṩÁ˿ɸ´ÓõĹ¤Òµ»¯½â¾ö¼Æ»®Ä£°å¡£Ëæ×ÅÂþ»Æ½Ì¨Êý¾Ý¹æÄ£µÄÒ»Á¬ÔöÌí£¬ÕÆÎÕÕâЩSparkʵսÊÖÒÕ½«³ÉΪ¹¤³ÌʦµÄ½¹µã¾ºÕùÁ¦¡£µÚÒ»ÕÂ֪ʶ»ØÊ×Óë±¾ÕÂÖØµãÏνÓ
ÔÚ×ÏÌÙׯ԰SparkϵÁн̵̳ÄÊ×ÕÂÖУ¬ÎÒÃǽ¨ÉèÁË»ù´¡¿ª·¢ÇéÐβ¢Íê³ÉÁËÊý¾ÝÊÕÂÞ¡£±¾Ðò´Î2ÕÂ×îÐÂÊÓÆµ×ÅÖØÕ¹Ê¾RDD£¨µ¯ÐÔÂþÑÜʽÊý¾Ý¼¯£©ºÍDataFrame£¨½á¹¹»¯Êý¾ÝÁýͳ£©ÔÚÂþ»Êý¾Ý´¦Öóͷ£ÖеÄÐͬӦÓá£Í¨¹ýBilibiliÂþ»ÕæÊÊÓû§»ÏñÊý¾Ý£¬½Ì³ÌÑÝʾÁËÔõÑùʵÏÖÍòÍò¼¶Âþ»±êÇ©µÄ¿ìËÙÏ´åªÓëͳ¼Æ£¬ÕâÕýÊǹ¹½¨ÍƼöϵͳµÄÒªº¦Ô¤´¦Öóͷ£°ì·¨¡£
Âþ»ÌØÕ÷¹¤³ÌÈ«Á÷³Ì½âÃÜ
ÊÓÆµÖÐÌØÊâÒýÈËעĿµÄÊÇSpark MLlibÔÚÌØÕ÷ÌáÈ¡ÖеÄÓ¦ÓÃʵ¼ù¡£Õë¶ÔÂþ»Æ½Ì¨µÄ¶àÔª»¯Êý¾Ý£¨°üÀ¨ÔĶÁʱ³¤¡¢µãÔÞÐÐΪ¡¢¸¶·Ñ¼Í¼µÈ£©£¬½²Ê¦ÏêϸÑÝʾÁËÔõÑù¹¹½¨TF-IDFÌØÕ÷¾ØÕó£¨´ÊÆµ-ÄæÎĵµÆµÂÊͳ¼ÆÒªÁ죩¡£ÄãÊÇ·ñÒÉÐÄÓÚº£Á¿Âþ»±êÇ©µÄ¹ØÁªÆÊÎö£¿½Ì³ÌÌá³öµÄ»ùÓÚFP-GrowthËã·¨µÄƵÈÔÏÍÚ¾ò¼Æ»®£¬ÄÜÓÐÓ÷¢Ã÷Óû§Æ«ºÃµÄÂþ»×éºÏ¼ÍÂÉ¡£
ÂþÑÜÊ½ÍÆ¼öË㷨ʵÏÖϸ½Ú
ÔÚÂþ»ÍƼö³¡¾°Ï£¬ÊÓÆµÉîÈë½â˵ÁËÐͬ¹ýÂËËã·¨ÔÚSparkÂþÑÜʽ¼¯ÈºÉϵÄʵÏÖÔÀí¡£ÌØÊâÖµµÃ¹Ø×¢µÄÊǽÓÄÉALS£¨½»Ìæ×îС¶þ³Ë·¨£©´¦Öóͷ£Óû§-Âþ»ÆÀ·Ö¾ØÕóµÄÕ½ÂÔ¡£½Ì³ÌչʾÁËÔõÑùÔÚBilibiliÂþ»°ÙÒÚ¼¶Óû§ÐÐΪÊý¾ÝÖУ¬Í¨¹ýºÏÀíµÄ·ÖÇøÉè¼Æ£¨Partition Strategy£©½«ÅÌËãºÄʱ½µµÍ63%£¬ÕâÖÖÐÔÄÜÓÅ»¯¶ÔÊµÊ±ÍÆ¼öϵͳÓÈΪÖ÷Òª¡£
ʵʱÊý¾Ý´¦Öóͷ£ÓëÐÔÄܵ÷ÓÅ
µÚ2ÕÂ×îиüÐÂÕ½ÚÐÂÔöÁËStructured StreamingÓ¦Óð¸Àý¡£Í¨¹ýÄ£ÄâÂþ»Æ½Ì¨µÄʵʱÔĶÁÊý¾ÝÁ÷£¬½Ì³ÌÑÝʾÁËÔõÑùʵÏÖ·ÖÖÓ¼¶¸üеÄÂþ»ÈȶȰñµ¥¡£Õë¶Ôпª·¢Õß³£¼ûµÄOOM£¨ÄÚ´æÒç³ö£©ÎÊÌ⣬½²Ê¦ÌØÊâÖ¸³öºÏÀíÉèÖÃexecutorÄÚ´æ²ÎÊýÓëÐòÁл¯·½·¨£¬ÕâÊÇÈ·±£Spark×÷ÒµÎȹÌÔËÐеÄÒªº¦ÉèÖá£
ÏîĿЧ¹ûÓëÉÌÒµ»¯Ó¦ÓÃÑéÖ¤
ͨ¹ýÍêÕû¸´ÏÖBilibiliÂþ»ÍƼöϵͳµÄ½¹µãÄ£¿é£¬¸ÃSparkʵ¼ùÏîÄ¿ÒÑʵÏÖµã»÷ÂÊÕ¹Íû׼ȷÂÊ82%µÄÉÌÒµ»¯»ù×¼¡£ÊÓÆµ×îºó´¦Õ¹Ê¾µÄA/B²âÊÔ£¨±ÈÕÕÊÔÑ飩Êý¾ÝÅú×¢£¬ÐÂÍÆ¼öË㷨ʹƽ̨Óû§ÈÕ¾ùÔĶÁʱ³¤ÌáÉý27%¡£ÕâÖÖ´ÓʵÑéÇéÐε½Éú²úϵͳµÄǨáãÂÄÀú£¬ÕýÊDZ¾½Ì³ÌÇø±ðÓÚͬÀà¿Î³ÌµÄ½¹µã¼ÛÖµ¡£
±¾´Î×ÏÌÙׯ԰Sparkʵ¼ùÊÓÆµµÚ2ÕÂ×îÐÂÄÚÈÝ£¬Í¨¹ýBilibiliÂþ»ÕæÊµÓªÒµ³¡¾°µÄÍêÕû»¹Ô£¬¹¹½¨ÁËÂþÑÜʽÅÌËã¿ò¼ÜÓ뻥ÁªÍø²úÆ·µÄÊÖÒÕÇÅÁº¡£½Ì³ÌÖÐÑÝʾµÄÊý¾Ý´¦Öóͷ£·¶Ê½¡¢Ë㷨ʵÏÖ¼¼ÇÉÓëÐÔÄܵ÷Óżƻ®£¬Îª¿ª·¢ÕßÌṩÁ˿ɸ´ÓõĹ¤Òµ»¯½â¾ö¼Æ»®Ä£°å¡£Ëæ×ÅÂþ»Æ½Ì¨Êý¾Ý¹æÄ£µÄÒ»Á¬ÔöÌí£¬ÕÆÎÕÕâЩSparkʵսÊÖÒÕ½«³ÉΪ¹¤³ÌʦµÄ½¹µã¾ºÕùÁ¦¡£