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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
¿ªÔ´Êý¾Ýºþ·½°¸Ñ¡ÐÍ£ºHudi¡¢Delta¡¢IcebergÉî¶È¶Ô±È
 
×÷ÕߣººúÕù(×ÓÒ㣩
  2514  次浏览      27
2020-8-19 
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª¼ÛÉÜÁËDatabricksºÍDeltÒª½â¾öµÄºËÐÄÎÊÌ⣬UberºÍApache HudiÒµÎñ³¡¾°£¬NetflixºÍApache IcebergµÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×ÔApache Iceberg¼¼ÊõÉçÇø£¨ID£ºapache-iceberg£©£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼­¡¢ÍƼö¡£

ĿǰÊÐÃæÉÏÁ÷ÐеÄÈý´ó¿ªÔ´Êý¾Ýºþ·½°¸·Ö±ðΪ£ºdelta¡¢Apache IcebergºÍApache Hudi¡£

ÆäÖУ¬ÓÉÓÚApache SparkÔÚÉÌÒµ»¯ÉÏÈ¡µÃ¾Þ´ó³É¹¦£¬ËùÒÔÓÉÆä±³ºóÉÌÒµ¹«Ë¾DatabricksÍÆ³öµÄdeltaÒ²ÏԵøñÍâÁÁÑÛ¡£

Apache HudiÊÇÓÉUberµÄ¹¤³ÌʦΪÂú×ãÆäÄÚ²¿Êý¾Ý·ÖÎöµÄÐèÇó¶øÉè¼ÆµÄÊý¾ÝºþÏîÄ¿£¬ËüÌṩµÄfast upsert/deleteÒÔ¼°compactionµÈ¹¦ÄÜ¿ÉÒÔ˵ÊǾ«×¼ÃüÖйã´óÈËÃñȺÖÚµÄÍ´µã£¬¼ÓÉÏÏîÄ¿¸÷³ÉÔ±»ý¼«µØÉçÇø½¨É裬°üÀ¨¼¼Êõϸ½Ú·ÖÏí¡¢¹úÄÚÉçÇøÍÆ¹ãµÈµÈ£¬Ò²ÔÚÖð²½µØÎüÒýDZÔÚÓû§µÄÄ¿¹â¡£

Apache IcebergĿǰ¿´Ôò»áÏÔµÃÏà¶ÔƽӹһЩ£¬¼òµ¥ËµÉçÇø¹Ø×¢¶ÈÔÝʱ±È²»ÉÏdelta£¬¹¦ÄÜÒ²²»ÈçHudi·á¸»£¬µ«È´ÊÇÒ»¸öÒ°ÐIJª²ªµÄÏîÄ¿£¬ÒòΪËü¾ßÓи߶ȳéÏóºÍ·Ç³£ÓÅÑŵÄÉè¼Æ£¬Îª³ÉΪһ¸öͨÓõÄÊý¾Ýºþ·½°¸µì¶¨ÁËÁ¼ºÃ»ù´¡¡£

ºÜ¶àÓû§»áÏ룬¿´×ÅÈý´óÏîÄ¿Òì²Ê·×³Ê£¬µ½µ×Ó¦¸ÃÔÚʲôÑùµÄ³¡¾°Ï£¬Ñ¡ÔñºÏÊÊÊý¾Ýºþ·½°¸ÄØ£¿½ñÌìÎÒÃǾÍÀ´½â¹¹Êý¾ÝºþµÄºËÐÄÐèÇó£¬Éî¶È¶Ô±ÈÈý´ó²úÆ·£¬°ïÖúÓû§¸üºÃµØÕë¶Ô×ÔÉí³¡¾°À´×öÊý¾Ýºþ·½°¸Ñ¡ÐÍ¡£

Ê×ÏÈ£¬ÎÒÃÇÀ´ÖðÒ»·ÖÎöΪºÎ¸÷¼¼Êõ¹«Ë¾ÒªÍƳöËûÃǵĿªÔ´Êý¾Ýºþ½â¾ö·½°¸£¬ËûÃÇÅöµ½µÄÎÊÌâÊÇʲô£¬Ìá³öµÄ·½°¸ÓÖÊÇÈçºÎ½â¾öÎÊÌâµÄ¡£ÎÒÃÇÏ£Íû¿Í¹ÛµØ·ÖÎöÒµÎñ³¡¾°£¬À´ÀíÐÔÅжϵ½µ×ÄÄЩ¹¦ÄܲÅÊǿͻ§µÄÍ´µãºÍ¸ÕÐè¡£

DatabricksºÍDelta

ÒÔDatabricksÍÆ³öµÄdeltaΪÀý£¬ËüÒª½â¾öµÄºËÐÄÎÊÌâ»ù±¾Éϼ¯ÖÐÔÚÏÂͼ £º

ͼƬÀ´Ô´£ºslideshare.net

ÔÚûÓÐdeltaÊý¾Ýºþ֮ǰ£¬DatabricksµÄ¿Í»§Ò»°ã»á²ÉÓþ­µäµÄlambda¼Ü¹¹À´¹¹½¨ËûÃǵÄÁ÷Åú´¦Àí³¡¾°¡£

ÒÔÓû§µã»÷ÐÐΪ·ÖÎöΪÀý£¬µã»÷ʼþ¾­Kafka±»ÏÂÓεÄSpark Streaming×÷ÒµÏû·Ñ£¬·ÖÎö´¦Àí£¨ÒµÎñ²ãÃæ¾ÛºÏµÈ£©ºóµÃµ½Ò»¸öʵʱµÄ·ÖÎö½á¹û£¬Õâ¸öʵʱ½á¹ûÖ»Êǵ±Ç°Ê±¼äËù¿´µ½µÄÒ»¸ö״̬£¬ÎÞ·¨·´Ó¦Ê±¼äÖáÉϵÄËùÓеã»÷ʼþ¡£

ËùÒÔΪÁ˱£´æÈ«Á¿µã»÷ÐÐΪ£¬Kafka»¹»á±»ÁíÍâÒ»¸öSpark Batch×÷Òµ·ÖÎö´¦Àí£¬µ¼Èëµ½ÎļþϵͳÉÏ£¨Ò»°ã¾ÍÊÇparquet¸ñʽдHDFS»òÕßS3£¬¿ÉÒÔÈÏΪÕâ¸öÎļþϵͳÊÇÒ»¸ö¼òÅä°æµÄÊý¾Ýºþ£©£¬¹©ÏÂÓεÄBatch×÷Òµ×öÈ«Á¿µÄÊý¾Ý·ÖÎöÒÔ¼°AI´¦ÀíµÈ¡£

ÕâÌ×·½°¸Æäʵ´æÔںܶàÎÊÌâ :

µÚÒ»¡¢ÅúÁ¿µ¼Èëµ½ÎļþϵͳµÄÊý¾ÝÒ»°ã¶¼È±·¦È«¾ÖµÄÑϸñschema¹æ·¶£¬ÏÂÓεÄSpark×÷Òµ×ö·ÖÎöʱÅöµ½¸ñʽ»ìÂÒµÄÊý¾Ý»áºÜÂé·³£¬Ã¿Ò»¸ö·ÖÎö×÷Òµ¶¼Òª¹ýÂË´¦Àí´íÂÒȱʧµÄÊý¾Ý£¬³É±¾½Ï´ó¡£

µÚ¶þ¡¢Êý¾ÝдÈëÎļþϵͳÕâ¸ö¹ý³ÌûÓÐACID±£Ö¤£¬Óû§¿ÉÄܶÁµ½µ¼ÈëÖмä״̬µÄÊý¾Ý¡£ËùÒÔÉϲãµÄÅú´¦Àí×÷ҵΪÁ˶㿪Õâ¸ö¿Ó£¬Ö»Äܵ÷¶È±Ü¿ªÊý¾Ýµ¼Èëʱ¼ä¶Î£¬¿ÉÒÔÏëÏóÕâ¶ÔÒµÎñ·½ÊǶàô²»ÓѺã»Í¬Ê±Ò²ÎÞ·¨±£Ö¤¶à´Îµ¼ÈëµÄ¿ìÕÕ°æ±¾£¬ÀýÈçÒµÎñ·½Ïë¶Á×î½ü5´Îµ¼ÈëµÄÊý¾Ý°æ±¾£¬ÆäʵÊÇ×ö²»µ½µÄ¡£

µÚÈý¡¢Óû§ÎÞ·¨¸ßЧupsert/deleteÀúÊ·Êý¾Ý£¬parquetÎļþÒ»µ©Ð´ÈëHDFSÎļþ£¬ÒªÏë¸ÄÊý¾Ý£¬¾ÍÖ»ÄÜÈ«Á¿ÖØÐÂдһ·ÝµÄÊý¾Ý£¬³É±¾ºÜ¸ß¡£ÊÂʵÉÏ£¬ÕâÖÖÐèÇóÊǹ㷺´æÔڵģ¬ÀýÈçÓÉÓÚ³ÌÐòÎÊÌ⣬µ¼Ö´íÎóµØÐ´ÈëһЩÊý¾Ýµ½Îļþϵͳ£¬ÏÖÔÚÒµÎñ·½ÏëÒª°ÑÕâЩÊý¾Ý¾ÀÕý¹ýÀ´£»ÏßÉϵÄMySQL binlog²»¶ÏµØµ¼Èëupdate/deleteÔöÁ¿¸üе½ÏÂÓÎÊý¾ÝºþÖУ»Ä³Ð©Êý¾ÝÉó²é¹æ·¶ÒªÇó×öÇ¿ÖÆÊý¾Ýɾ³ý£¬ÀýÈçÅ·ÖÞ³ǫ̈µÄGDPRÒþ˽±£»¤µÈµÈ¡£

µÚËÄ¡¢Æµ·±µØÊý¾Ýµ¼Èë»áÔÚÎļþϵͳÉϲúÉú´óÁ¿µÄСÎļþ£¬µ¼ÖÂÎļþϵͳ²»¿°Öظº£¬ÓÈÆäÊÇHDFSÕâÖÖ¶ÔÎļþÊýÓÐÏÞÖÆµÄÎļþϵͳ¡£

ËùÒÔ£¬ÔÚDatabricks¿´À´£¬ÒÔÏÂËĸöµãÊÇÊý¾Ýºþ±Ø±¸µÄ£º

ÊÂʵÉÏ, DatabricksÔÚÉè¼Ædeltaʱ£¬Ï£Íû×öµ½Á÷Åú×÷ÒµÔÚÊý¾Ý²ãÃæ×öµ½½øÒ»²½µÄͳһ(ÈçÏÂͼ)¡£ÒµÎñÊý¾Ý¾­¹ýKafkaµ¼È뵽ͳһµÄÊý¾ÝºþÖУ¨ÎÞÂÛÅú´¦Àí£¬»¹ÊÇÁ÷´¦Àí£©£¬ÉϲãÒµÎñ¿ÉÒÔ½èÖú¸÷ÖÖ·ÖÎöÒýÇæ×ö½øÒ»²½µÄÉÌÒµ±¨±í·ÖÎö¡¢Á÷ʽ¼ÆËãÒÔ¼°AI·ÖÎöµÈµÈ¡£

ËùÒÔ£¬×ܽáÆðÀ´£¬ÎÒÈÏΪdatabricksÉè¼ÆdeltaʱÖ÷Òª¿¼ÂÇʵÏÖÒÔϺËÐŦÄÜÌØÐÔ£º

UberºÍApache Hudi

UberµÄÒµÎñ³¡¾°Ö÷ҪΪ£º½«ÏßÉϲúÉúµÄÐг̶©µ¥Êý¾Ý£¬Í¬²½µ½Ò»¸öͳһµÄÊý¾ÝÖÐÐÄ£¬È»ºó¹©Éϲã¸÷¸ö³ÇÊÐÔËӪͬÊÂÓÃÀ´×ö·ÖÎöºÍ´¦Àí¡£

ÔÚ2014ÄêµÄʱºò£¬UberµÄÊý¾Ýºþ¼Ü¹¹Ïà¶Ô±È½Ï¼òµ¥£¬ÒµÎñÈÕÖ¾¾­ÓÉKafkaͬ²½µ½S3ÉÏ£¬ÉϲãÓÃEMR×öÊý¾Ý·ÖÎö£»ÏßÉϵĹØÏµÐÍÊý¾Ý¿âÒÔ¼°NoSQLÔò»áͨ¹ýETL£¨ETLÈÎÎñÒ²»áÀ­È¥Ò»Ð©Kakfaͬ²½µ½S3µÄÊý¾Ý£©ÈÎÎñͬ²½µ½±ÕÔ´µÄVertica·ÖÎöÐÍÊý¾Ý¿â£¬³ÇÊÐÔËӪͬѧÖ÷Ҫͨ¹ýVertica SQLʵÏÖÊý¾Ý¾ÛºÏ¡£µ±Ê±Ò²Åöµ½Êý¾Ý¸ñʽ»ìÂÒ¡¢ÏµÍ³À©Õ¹³É±¾¸ß£¨ÒÀÀµÊÕVerticaÉÌÒµÊÕ·ÑÈí¼þ£©¡¢Êý¾Ý»ØÌîÂé·³µÈÎÊÌâ¡£

ºóÐøÇ¨ÒÆµ½¿ªÔ´µÄHadoopÉú̬£¬½â¾öÁËÀ©Õ¹ÐÔÎÊÌâµÈÎÊÌ⣬µ«ÒÀÈ»Åöµ½DatabricksÉÏÊöµÄһЩÎÊÌ⣬ÆäÖÐ×îºËÐĵÄÎÊÌâÊÇÎÞ·¨¿ìËÙupsert´æÁ¿Êý¾Ý¡£

ÈçÉÏͼËùʾ£¬ETLÈÎÎñÿ¸ô30·ÖÖÓ¶¨ÆÚµØ°ÑÔöÁ¿¸üÐÂÊý¾Ýͬ²½µ½·ÖÎö±íÖУ¬È«²¿¸ÄдÒÑ´æÔÚµÄÈ«Á¿¾ÉÊý¾ÝÎļþ£¬µ¼ÖÂÊý¾ÝÑÓ³ÙºÍ×ÊÔ´ÏûºÄ¶¼ºÜ¸ß¡£

´ËÍ⣬ÔÚÊý¾ÝºþµÄÏÂÓΣ¬»¹´æÔÚÁ÷ʽ×÷Òµ»áÔöÁ¿µØÏû·ÑÐÂдÈëµÄÊý¾Ý£¬Êý¾ÝºþµÄÁ÷ʽÏû·Ñ¶ÔËûÃÇÀ´ËµÒ²ÊDZر¸µÄ¹¦ÄÜ¡£ËùÒÔ£¬ËûÃǾÍÏ£ÍûÉè¼ÆÒ»ÖÖºÏÊʵÄÊý¾Ýºþ·½°¸£¬ÔÚ½â¾öͨÓÃÊý¾ÝºþÐèÇóµÄǰÌáÏ£¬»¹ÄÜʵÏÖ¿ìËÙµÄupsertÒÔ¼°Á÷ʽÔöÁ¿Ïû·Ñ¡£

UberÍŶÓÔÚHudiÉÏͬʱʵÏÖÁËCopy On WriteºÍMerge On ReadµÄÁ½ÖÖÊý¾Ý¸ñʽ£¬ÆäÖÐMerge On Read¾ÍÊÇΪÁ˽â¾öËûÃǵÄfast upsert¶øÉè¼ÆµÄ¡£

¼òµ¥À´Ëµ£¬¾ÍÊÇÿ´Î°ÑÔöÁ¿¸üеÄÊý¾Ý¶¼Ð´Èëµ½Ò»Åú¶ÀÁ¢µÄdeltaÎļþ¼¯£¬¶¨ÆÚµØÍ¨¹ýcompactionºÏ²¢deltaÎļþºÍ´æÁ¿µÄdataÎļþ¡£Í¬Ê±¸øÉϲã·ÖÎöÒýÇæÌṩÈýÖÖ²»Í¬µÄ¶ÁÈ¡Êӽǣº½ö¶ÁÈ¡deltaÔöÁ¿Îļþ¡¢½ö¶ÁÈ¡dataÎļþ¡¢ºÏ²¢¶ÁÈ¡deltaºÍdataÎļþ¡£Âú×ã¸÷ÖÖÒµÎñ·½¶ÔÊý¾ÝºþµÄÁ÷ÅúÊý¾Ý·ÖÎöÐèÇó¡£

×îÖÕ£¬ÎÒÃÇ¿ÉÒÔÌáÁ¶³öUberµÄÊý¾ÝºþÐèÇóΪÈçÏÂͼ£¬ÕâÒ²ÕýºÃÊÇHudiËù²àÖØµÄºËÐÄÌØÐÔ£º

NetflixºÍApache Iceberg

NetflixµÄÊý¾ÝºþÔ­ÏÈÊǽèÖúHiveÀ´¹¹½¨£¬µ«·¢ÏÖHiveÔÚÉè¼ÆÉϵÄÖî¶àȱÏÝÖ®ºó£¬¿ªÊ¼×ªÎª×ÔÑÐIceberg£¬²¢×îÖÕÑÝ»¯³ÉApacheÏÂÒ»¸ö¸ß¶È³éÏóͨÓõĿªÔ´Êý¾Ýºþ·½°¸¡£

NetflixÓÃÄÚ²¿µÄÒ»¸öʱÐòÊý¾ÝÒµÎñµÄ°¸ÀýÀ´ËµÃ÷HiveµÄÕâЩÎÊÌ⣬²ÉÓÃHiveʱ°´ÕÕʱ¼ä×Ö¶Î×öpartition£¬ËûÃÇ·¢ÏÖ½öÒ»¸öÔ»á²úÉú2688¸öpartitionºÍ270Íò¸öÊý¾ÝÎļþ¡£ËûÃÇÖ´ÐÐÒ»¸ö¼òµ¥µÄselect²éѯ£¬·¢ÏÖ½öÔÚ·ÖÇø²Ã¼ô½×¶Î¾ÍºÄ·ÑÊýÊ®·ÖÖÓ¡£

ËûÃÇ·¢ÏÖHiveµÄÔªÊý¾ÝÒÀÀµÒ»¸öÍⲿµÄMySQLºÍHDFSÎļþϵͳ£¬Í¨¹ýMySQLÕÒµ½Ïà¹ØµÄparitionÖ®ºó£¬ÐèҪΪÿ¸öpartitionÈ¥HDFSÎļþϵͳÉϰ´ÕÕ·ÖÇø×öĿ¼µÄlist²Ù×÷¡£ÔÚÎļþÁ¿´óµÄÇé¿öÏ£¬ÕâÊÇÒ»¸ö·Ç³£ºÄʱµÄ²Ù×÷¡£

ͬʱ£¬ÓÉÓÚÔªÊý¾Ý·ÖÊôMySQLºÍHDFS¹ÜÀí£¬Ð´Èë²Ù×÷±¾ÉíµÄÔ­×ÓÐÔÄÑÒÔ±£Ö¤¡£¼´Ê¹ÔÚ¿ªÆôHive ACIDÇé¿öÏ£¬ÈÔÓкܶàϸС³¡¾°ÎÞ·¨±£Ö¤Ô­×ÓÐÔ¡£ÁíÍ⣬Hive MetastoreûÓÐÎļþ¼¶±ðµÄͳ¼ÆÐÅÏ¢£¬ÕâʹµÃfilterÖ»ÄÜÏÂÍÆµ½partition¼¶±ð£¬¶øÎÞ·¨ÏÂÍÆµ½Îļþ¼¶±ð£¬¶ÔÉϲã·ÖÎöÐÔÄÜËðºÄÎ޿ɱÜÃâ¡£

×îºó£¬Hive¶Ôµ×²ãÎļþϵͳµÄ¸´ÔÓÓïÒåÒÀÀµ£¬Ê¹µÃÊý¾ÝºþÄÑÒÔ¹¹½¨Ôڳɱ¾¸üµÍµÄS3ÉÏ¡£

ÓÚÊÇ£¬NetflixΪÁ˽â¾öÕâЩʹµã£¬Éè¼ÆÁË×Ô¼ºµÄÇáÁ¿¼¶Êý¾ÝºþIceberg¡£ÔÚÉè¼ÆÖ®³õ£¬×÷ÕßÃǽ«Æä¶¨Î»ÎªÒ»¸öͨÓõÄÊý¾ÝºþÏîÄ¿£¬ËùÒÔÔÚʵÏÖÉÏ×öÁ˸߶ȵijéÏó¡£

ËäȻĿǰ´Ó¹¦ÄÜÉÏ¿´²»ÈçÇ°ÃæÁ½Õ߷ḻ£¬µ«ÓÉÓÚËüÀι̼áʵµÄµ×²ãÉè¼Æ£¬Ò»µ©¹¦Äܲ¹Æë£¬½«³ÉΪһ¸ö·Ç³£ÓÐDZÁ¦µÄ¿ªÔ´Êý¾Ýºþ·½°¸¡£

×ÜÌåÀ´Ëµ£¬NetflixÉè¼ÆIcebergµÄºËÐÄËßÇó¿ÉÒÔ¹éÄÉΪÈçÏ£º

Í´µãС½á

ÎÒÃÇ¿ÉÒÔ°ÑÉÏÊöÈý¸öÏîÄ¿Õë¶ÔµÄÍ´µã£¬·Åµ½Ò»ÕÅͼÉÏÀ´¿´¡£¿ÉÒÔ·¢ÏÖ±êºìµÄ¹¦Äܵ㣬»ù±¾ÉÏÊÇÒ»¸öºÃµÄÊý¾Ýºþ·½°¸Ó¦¸ÃÈ¥×öµ½µÄ¹¦Äܵ㣺

Æß´óά¶È¶Ô±È

ÔÚÀí½âÁËÉÏÊöÈý´ó·½°¸¸÷×ÔÉè¼ÆµÄ³õÖÔºÍÃæÏòµÄÍ´µãÖ®ºó£¬½ÓÏÂÀ´ÎÒÃÇ´Ó7¸öά¶ÈÀ´¶Ô±ÈÆÀ¹ÀÈý´óÏîÄ¿µÄ²îÒ졣ͨ³£ÈËÃÇÔÚ¿¼ÂÇÊý¾Ýºþ·½°¸Ñ¡ÐÍʱ£¬Hive ACIDÒ²ÊÇÒ»¸öÇ¿ÓÐÁ¦µÄºòÑ¡ÈË£¬ÒòΪËüÌṩÁËÈËÃÇÐèÒªµÄ½ÏΪÍêÉÆ¹¦Äܼ¯ºÏ£¬ËùÒÔÕâÀïÎÒÃǰÑHive ACIDÄÉÈëµ½¶Ô±ÈÐÐÁÐÖС£

µÚÒ»¡¢ACIDºÍ¸ôÀë¼¶±ðÖ§³Ö

ÕâÀïÖ÷Òª½âÊÍÏ£¬¶ÔÊý¾ÝºþÀ´ËµÈýÖÖ¸ôÀë·Ö±ð´ú±íµÄº¬Ò壺

SerializationÊÇ˵ËùÓеÄreaderºÍwriter¶¼±ØÐë´®ÐÐÖ´ÐУ»

Write Serialization: ÊÇ˵¶à¸öwriter±ØÐëÑϸñ´®ÐУ¬readerºÍwriterÖ®¼äÔò¿ÉÒÔͬʱÅÜ£»

Snapshot Isolation: ÊÇ˵Èç¹û¶à¸öwriterдµÄÊý¾ÝÎÞ½»¼¯£¬Ôò¿ÉÒÔ²¢·¢Ö´ÐУ»·ñÔòÖ»ÄÜ´®ÐС£ReaderºÍwriter¿ÉÒÔͬʱÅÜ¡£

×ÛºÏÆðÀ´¿´£¬Snapshot Isolation¸ôÀë¼¶±ðµÄ²¢·¢ÐÔÊÇÏà¶Ô±È½ÏºÃµÄ¡£

µÚ¶þ¡¢Schema±ä¸üÖ§³ÖºÍÉè¼Æ

ÕâÀïÓÐÁ½¸ö¶Ô±ÈÏһ¸öÊÇschema±ä¸üµÄÖ§³ÖÇé¿ö£¬ÎÒµÄÀí½âÊÇhudi½öÖ§³ÖÌí¼Ó¿ÉÑ¡ÁкÍɾ³ýÁÐÕâÖÖÏòºó¼æÈݵÄDDL²Ù×÷£¬¶øÆäËû·½°¸ÔòûÓÐÕâ¸öÏÞÖÆ¡£ÁíÍâÒ»¸öÊÇÊý¾ÝºþÊÇ·ñ×Ô¶¨Òåschema½Ó¿Ú£¬ÒÔÆÚ¸ú¼ÆËãÒýÇæµÄschema½âñî¡£ÕâÀïicebergÊÇ×öµÄ±È½ÏºÃµÄ£¬³éÏóÁË×Ô¼ºµÄschema£¬²»°ó¶¨ÈκμÆËãÒýÇæ²ãÃæµÄschema¡£

µÚÈý¡¢Á÷Åú½Ó¿ÚÖ§³Ö

ĿǰIcebergºÍHiveÔÝʱ²»Ö§³ÖÁ÷ʽÏû·Ñ£¬²»¹ýIcebergÉçÇøÕýÔÚissue 179ÉÏ¿ª·¢Ö§³Ö¡£

µÚËÄ¡¢½Ó¿Ú³éÏó³Ì¶ÈºÍ²å¼þ»¯

ÕâÀïÖ÷Òª´Ó¼ÆËãÒýÇæµÄдÈëºÍ¶Áȡ·¾¶¡¢µ×²ã´æ´¢¿É²å°Î¡¢Îļþ¸ñʽËĸö·½ÃæÀ´×ö¶Ô±È¡£ÕâÀïIcebergÊdzéÏó³Ì¶È×öµÃ×îºÃµÄÊý¾Ýºþ·½°¸£¬Ëĸö·½Ãæ¶¼×öÁ˷dz£¸É¾»µÄ½âñî¡£deltaÊÇdatabricks±³ºóÖ÷ÍÆµÄ£¬±ØÐëÌìÈ»°ó¶¨spark£»hudiµÄ´úÂë¸údeltaÀàËÆ£¬Ò²ÊÇÇ¿°ó¶¨spark¡£

´æ´¢¿É²å°ÎµÄÒâ˼ÊÇ˵£¬ÊÇ·ñ·½±ãÇ¨ÒÆµ½ÆäËû·Ö²¼Ê½ÎļþϵͳÉÏ£¨ÀýÈçS3£©£¬ÕâÐèÒªÊý¾Ýºþ¶ÔÎļþϵͳAPI½Ó¿ÚÓÐ×îÉÙµÄÓïÒåÒÀÀµ£¬ÀýÈçÈôÊý¾ÝºþµÄACIDÇ¿ÒÀÀµÎļþϵͳrename½Ó¿ÚÔ­×ÓÐԵϰ£¬¾ÍÄÑÒÔÇ¨ÒÆµ½S3ÕâÑùÁ®¼Û´æ´¢ÉÏ£¬Ä¿Ç°À´¿´Ö»ÓÐHiveûÓÐÌ«¿¼ÂÇÕâ·½ÃæµÄÉè¼Æ£»Îļþ¸ñʽָµÄÊÇÔÚ²»ÒÀÀµÊý¾Ýºþ¹¤¾ßµÄÇé¿öÏ£¬ÊÇ·ñÄܶÁÈ¡ºÍ·ÖÎöÎļþÊý¾Ý£¬Õâ¾ÍÒªÇóÊý¾Ýºþ²»¶îÍâÉè¼Æ×Ô¼ºµÄÎļþ¸ñʽ£¬Í³Ò»ÓÿªÔ´µÄparquetºÍavroµÈ¸ñʽ¡£ÕâÀÓÐÒ»¸öºÃ´¦¾ÍÊÇ£¬Ç¨ÒƵijɱ¾ºÜµÍ£¬²»»á±»Ä³Ò»¸öÊý¾Ýºþ·½°¸¸ø°óËÀ¡£

µÚÎå¡¢²éѯÐÔÄÜÓÅ»¯

µÚÁù¡¢ÆäËû¹¦ÄÜ

ÕâÀïOne line demoÖ¸µÄÊÇ£¬Ê¾ÀýdemoÊÇ·ñ×ã¹»¼òµ¥£¬ÌåÏÖÁË·½°¸µÄÒ×ÓÃÐÔ£¬IcebergÉÔ΢¸´ÔÓÒ»µã£¨ÎÒÈÏΪÖ÷ÒªÊÇIceberg×Ô¼º³éÏó³öÁËschema£¬ËùÒÔ²Ù×÷ǰÐèÒª¶¨ÒåºÃ±íµÄschema£©¡£×öµÃ×îºÃµÄÆäʵÊÇdelta£¬ÒòΪËüÉî¶È¸úËæsparkÒ×ÓÃÐԵĽŲ½¡£

PythonÖ§³ÖÆäʵÊǺܶà»ùÓÚÊý¾ÝºþÖ®ÉÏ×ö»úÆ÷ѧϰµÄ¿ª·¢Õ߻ῼÂǵÄÎÊÌ⣬¿ÉÒÔ¿´µ½IcebergºÍDeltaÊÇ×öµÄºÜºÃµÄÁ½¸ö·½°¸¡£

³öÓÚÊý¾Ý°²È«µÄ¿¼ÂÇ£¬Iceberg»¹ÌṩÁËÎļþ¼¶±ðµÄ¼ÓÃܽâÃܹ¦ÄÜ£¬ÕâÊÇÆäËû·½°¸Î´Ôø¿¼Âǵ½µÄÒ»¸ö±È½ÏÖØÒªµÄµã¡£

µÚÆß¡¢ÉçÇøÏÖ×´£¨½ØÖ¹µ½2020-01-08£©

ÕâÀïÐèҪ˵Ã÷µÄÊÇ£¬DeltaºÍHudiÁ½¸öÏîÄ¿ÔÚ¿ªÔ´ÉçÇøµÄ½¨ÉèºÍÍÆ¶¯·½Ã棬×öµÄ±È½ÏºÃ¡£DeltaµÄ¿ªÔ´°æºÍÉÌÒµ°æ±¾£¬ÌṩÁËÏêϸµÄÄÚ²¿Éè¼ÆÎĵµ£¬Óû§·Ç³£ÈÝÒ×Àí½âÕâ¸ö·½°¸µÄÄÚ²¿Éè¼ÆºÍºËÐŦÄÜ£¬Í¬Ê±Databricks»¹ÌṩÁË´óÁ¿¶ÔÍâ·ÖÏíµÄ¼¼ÊõÊÓÆµºÍÑݽ²£¬ÉõÖÁÑûÇëÁËËûÃÇµÄÆóÒµÓû§À´·ÖÏíDeltaµÄÏßÉϾ­Ñé¡£

UberµÄ¹¤³ÌʦҲ·ÖÏíÁË´óÁ¿HudiµÄ¼¼Êõϸ½ÚºÍÄÚ²¿·½°¸Â䵨£¬Ñо¿¹ÙÍøµÄ½ü10¸öPPTÒѾ­ÄܽÏΪÇáËÉÀí½âÄÚ²¿Ï¸½Ú£¬´ËÍâ¹úÄÚµÄС»ï°éÃÇÒ²ÔÚ»ý¼«µØÍƶ¯ÉçÇø½¨É裬ÌṩÁ˹ٷ½µÄ¼¼Êõ¹«ÖںźÍÓʼþÁбíÖܱ¨¡£

IcebergÏà¶Ô»áƽ¾²Ò»Ð©£¬ÉçÇøµÄ´ó²¿·ÖÌÖÂÛ¶¼ÔÚGithubµÄissuesºÍpull requestÉÏ£¬ÓʼþÁбíµÄÌÖÂÛ»áÉÙÒ»µã£¬ºÜ¶àÓмÛÖµµÄ¼¼ÊõÎĵµÒª×Ðϸ¸ú×ÙissuesºÍPR²ÅÄÜ¿´µ½£¬ÕâÒ²Ðí¸úÉçÇøºËÐÄ¿ª·¢Õߵķç¸ñÓйء£

×ܽá

ÎÒÃǰÑÈý¸ö²úÆ·£¨ÆäÖÐdelta·ÖΪdatabricksµÄ¿ªÔ´°æºÍÉÌÒµ°æ£©×ܽá³ÉÈçÏÂͼ£º

Èç¹ûÓÃÒ»¸ö±ÈÓ÷À´ËµÃ÷delta¡¢iceberg¡¢hudi¡¢hive-acidËÄÕß²îÒìµÄ»°£¬¿ÉÒÔ°ÑËĸöÏîÄ¿±È×ö½¨·¿×Ó¡£ÓÉÓÚ¿ªÔ´µÄdeltaÊÇdatabricks±ÕÔ´deltaµÄÒ»¸ö¼ò»¯°æ±¾£¬ËüÖ÷ҪΪÓû§Ìṩһ¸ötable formatµÄ¼¼Êõ±ê×¼£¬±ÕÔ´°æ±¾µÄdelta»ùÓÚÕâ¸ö±ê׼ʵÏÖÁËÖî¶àÓÅ»¯£¬ÕâÀïÎÒÃÇÖ÷ÒªÓñÕÔ´µÄdeltaÀ´×ö¶Ô±È¡£

DeltaµÄ·¿×Óµ××ùÏà¶Ô½áʵ£¬¹¦ÄÜÂ¥²ãÒ²½¨µÃÏà¶Ô±È½Ï¸ß£¬µ«Õâ¸ö·¿×ÓÆäʵ¿ÉÒÔ˵ÊÇdatabricksµÄ£¬±¾ÖÊÉÏÊÇΪÁ˸üºÃµØ×³´óSparkÉú̬£¬ÔÚdeltaÉÏÆäËûµÄ¼ÆËãÒýÇæÄÑÒÔÌæ»»SparkµÄλÖã¬ÓÈÆäÊÇдÈë·¾¶²ãÃæ¡£

IcebergµÄ½¨Öþ»ù´¡·Ç³£Ôúʵ£¬À©Õ¹µ½ÐµļÆËãÒýÇæ»òÕßÎļþϵͳ¶¼·Ç³£µÄ·½±ã£¬µ«ÊÇÏÖÔÚ¹¦ÄÜÂ¥²ãÏà¶ÔµÍÒ»µã£¬Ä¿Ç°×îȱµÄ¹¦ÄܾÍÊÇupsertºÍcompactionÁ½¸ö£¬IcebergÉçÇøÕýÔÚÒÔ×î¸ßÓÅÏȼ¶Íƶ¯ÕâÁ½¸ö¹¦ÄܵÄʵÏÖ¡£

HudiµÄÇé¿öÒªÏà¶Ô²»Ò»Ñù£¬ËüµÄ½¨Öþ»ù´¡Éè¼Æ²»Èçiceberg½áʵ£¬¾Ù¸öÀý×Ó£¬Èç¹ûÒª½ÓÈëFlink×÷ΪSinkµÄ»°£¬ÐèÒª°ÑÕû¸ö·¿×Ó´Óµ×ÏòÉÏ·­Ò»±é£¬°Ñ½Ó¿Ú³éÏó³öÀ´£¬Í¬Ê±»¹Òª¿¼ÂDz»Ó°ÏìÆäËû¹¦ÄÜ£¬µ±È»HudiµÄ¹¦ÄÜÂ¥²ã»¹ÊDZȽÏÍêÉÆµÄ£¬ÌṩµÄupsertºÍcompaction¹¦ÄÜÖ±½ÓÃüÖйã´óȺÖÚµÄÍ´µã¡£

HiveµÄ·¿×Ó£¬¿´ÆðÀ´ÊÇÒ»¶°ºÀÕ¬£¬¾ø´ó²¿·Ö¹¦Äܶ¼ÓУ¬°ÑËü×öΪÊý¾ÝºþÓеãÏñ¿¿×źÀÕ¬µÄÒ»¶Âǽ½¨·¿×Ó£¬ÏÔµÃÏà¶ÔÖØÁ¿¼¶Ò»µã£¬ÁíÍâÕýÈçNetflixÉÏÊöµÄ·ÖÎö£¬Ï¸¿´Õâ¸öºÀÕ¬µÄÇ½ÃæÊÇÆäʵÊÇÓÐһЩÎÊÌâµÄ¡£

 

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

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
InfluxDB¸ÅÄîºÍ»ù±¾²Ù×÷
InfluxDB TSM´æ´¢ÒýÇæÖ®Êý¾ÝдÈë
Éî¶ÈÂþ̸Êý¾Ýϵͳ¼Ü¹¹¡ª¡ªLambda architecture
Lambda¼Ü¹¹Êµ¼ù
InfluxDB TSM´æ´¢ÒýÇæÖ®Êý¾Ý¶ÁÈ¡
×îпγÌ
OracleÊý¾Ý¿âÐÔÄÜÓÅ»¯¡¢¼Ü¹¹Éè¼ÆºÍÔËÐÐά»¤
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
NoSQLÊý¾Ý¿â£¨Ô­Àí¡¢Ó¦Óá¢×î¼Ñʵ¼ù£©
ÆóÒµ¼¶Hadoop´óÊý¾Ý´¦Àí×î¼Ñʵ¼ù
OracleÊý¾Ý¿âÐÔÄÜÓÅ»¯×î¼Ñʵ¼ù
³É¹¦°¸Àý
ij½ðÈÚ¹«Ë¾ Mysql¼¯ÈºÓëÐÔÄÜÓÅ»¯
±±¾© ²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
ÖªÃûijÐÅϢͨÐŹ«Ë¾ NoSQL»º´æÊý¾Ý¿â¼¼Êõ
±±¾© oracleÊý¾Ý¿âSQLÓÅ»¯
ÖйúÒÆ¶¯ IaaSÔÆÆ½Ì¨-Ö÷Á÷Êý¾Ý¿â¼°´æ´¢¼¼Êõ