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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Hive SQLÇ¨ÒÆSpark SQLÔڵεεÄʵ¼ù
 
×÷Õߣº Max£¬John µÈ
  1642  次浏览      30
2021-11-30
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½éÉÜHive SQLÇ¨ÒÆSpark SQLÔڵεεÄʵ¼ù £¬Ê×ÏȶÔÇ¨ÒÆ·½°¸½øÐиÅÒªÉè¼Æ£¬ÏêϸÉè¼Æ£¬È»ºóÃèÊöÁËÇ¨ÒÆµÄ¹ý³Ì£¬×îºóÇ¨ÒÆ½á¹û¶Ô±È£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú ¡£
±¾ÎÄÀ´×ÔÓÚ µÎµÎ´óÊý¾Ý £¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼­¡¢ÍƼö¡£

µ¼¶Á£º ÔڵεÎS QLÈÎÎñ´ÓHiveÇ¨ÒÆµ½Sparkºó£¬Spark SQLÈÎÎñÕ¼±ÈÌáÉýÖÁ85%£¬ÈÎÎñÔËÐÐʱ¼ä½ÚÊ¡40% £¬ÔËÐÐÈÎÎñÐèÒªµÄ¼ÆËã×ÊÔ´½ÚÊ¡21%£¬ÄÚ´æ×ÊÔ´½ÚÊ¡49%¡£ÔÚÇ¨ÒÆ¹ý³Ì ÖÐ ÎÒÃdzÁµí³öÒ»Ì×Ç¨ÒÆÁ÷³Ì£¬ ²¢ÇÒ·¢ÏÖ²¢½â¾öÁËÁ½¸öÒýÇæÔÚÓï·¨£¬UDF£¬ÐÔÄܺ͹¦ÄÜ·½ÃæµÄ²îÒì¡£

1. Ç¨ÒÆ±³¾°

Spark×Ô´Ó2010ÄêÃæÊÀ£¬µ½2020ÄêÒѾ­¾­¹ýÊ®ÄêµÄ·¢Õ¹£¬ÏÖÔÚÒѾ­·¢Õ¹Îª´óÊý¾ÝÅú¼ÆËãµÄÊ×Ñ¡ÒýÇæ£¬ÔڵεÎSparkÊÇÔÚ2015Äê±ã¿ªÊ¼ÂäµØÊ¹Ó㬲»¹ýÖ÷ҪʹÓõij¡¾°ÊǸü¶àÔÚÊý¾ÝÍÚ¾òºÍ»úÆ÷ѧϰ·½Ïò£¬¶ÔÓÚÊý²ÖSQL·½Ïò£¬Ö÷ÒªÈÔÒÔHive SQLΪÖ÷¡£ ÏÂͼÊǵ±Ç°µÎµÎÄÚ²¿SQLÈÎÎñµÄ¼Ü¹¹Í¼£¬µÎµÎ¸÷¸öÒµÎñÏßµÄÀëÏßÈÎÎñÊÇͨ¹ýһվʽÊý¾Ý¿ª·¢Æ½Ì¨DataStudioµ÷¶ÈµÄ£¬DataStudio°ÑSQLÈÎÎñÌá½»µ½HiveServer2»òÕßSparkÁ½ÖÖ¼ÆËãÒýÇæÉÏ¡£Á½¸ö¼ÆËãÒýÇæ¾ùÒÀÀµ×ÊÔ´¹ÜÀíÆ÷YARNºÍÎļþϵͳHDFS¡£

ÔÚÇ¨ÒÆÖ®Ç°ÎÒÃÇÃæÁÙµÄÖ÷ÒªÎÊÌâÓУº

  • SQLÈÎÎñÔËÐÐÂý£º Ç¨ÒÆÇ°SQLÈÎÎñÔËÐÐµÄÆ½¾ùʱ¼äÊÇ20·ÖÖÓ£¬Ö÷ÒªÔ­ÒòÊÇÕ¼±È¸ß´ï83%µÄHive SQLÈÎÎñÔËÐÐʱ¼ä³¤£¬HiveÈÎÎñÖ´Ðйý³ÌÖлáÆô¶¯¶à¸öMR Job£¬Job¼äµÄÖмä½á¹û´æ´¢ÔÚHDFS£¬ËùÒÔͬһ¸öSQL£¬ Hive±ÈSparkÖ´ÐеÄʱ¼ä¸ü³¤£»
  • Hive SQLÎȶ¨ÐԲ Ò»¸öHS2»áͬʱִÐжà¸öÓû§µÄHive SQLÈÎÎñ£¬µ±Ò»¸öÒì³£ÈÎÎñµ¼ÖÂHS2½ø³ÌÏìÓ¦ÂýÉõÖÁÒì³£Í˳öʱ£¬ÔËÐÐÔÚͬһ¸öʵÀýµÄSQLÈÎÎñÒ²»áÔËÐлºÂýÉõÖÁʧ°Ü¡£¶øÒì³£ÈÎÎñ³¡¾°¸÷Òì¡£ÎÒÃÇÔø¾­Óöµ½µÄÒì³£ÈÎÎñÓжà¸ö´óSQL¼ÓÔØ¹ý¶àµÄ·ÖÇøÔªÊý¾Ýµ¼ÖÂHS2 FullGC£¬¼ÓÔØUDFʱµ¼ÖÂHS2½ø³Ìcore dump£¬UDF·ÃÎÊHDFSûÓйرÕÁ÷µ¼ÖÂHS2»úÆ÷¶Ë¿Ú±»´òÂú£¬ÕâЩûÓÐͨÓýⷨ£¬ ÎÊÌâºÜÄÑÊÕÁ²£»
  • ÈËÁ¦·ÖÉ¢£º Á½¸öÒýÇæÐèҪͶÈëË«±¶µÄÈËÁ¦£¬ÔÚÈËÔ±ÓÐÏÞµÄÇé¿öÏ£¬¶ÔÒýÇæµÄÕÆ¿ØÁ¦»á¼õÈõ£»
  • ËùÒÔΪÁËSQLÈÎÎñÔËÐÐ ¸ü¿ì£¬¸üÎÈ £¬ÍŶÓÈËÁ¦¾Û½¹£¬¶ÔÒýÇæÓÐ ¸üÇ¿ µÄÕÆ¿ØÁ¦£¬ÎÒÃǾö¶¨°ÑHive SQLÇ¨ÒÆµ½Spark SQL¡£

    2. Ç¨ÒÆ·½°¸¸ÅÒªÉè¼Æ

    Hive SQLÇ¨ÒÆµ½Spark SQLºóÐèÂú×ãÒÔÏÂÌõ¼þ£º

  • ±£Ö¤Êý¾ÝÒ»ÖÂÐÔ£¬ Ò²¾ÍÊÇÏàͬµÄSQLʹÓÃSparkºÍHiveÖ´ÐеĽá¹ûÓ¦¸ÃÊÇÒ»ÑùµÄ£»
  • ±£Ö¤Óû§ÓÐÊÕÒæ£¬ Ò²¾ÍÊÇʹÓÃSparkÖ´ÐÐSQLºóÓ¦¸Ã½ÚÊ¡×ÊÔ´£¬°üÀ¨Ê±¼ä£¬cpuºÍmemroy£»
  • Ç¨ÒÆ¹ý³Ì¶ÔÓû§Í¸Ã÷£»
  • ΪÁËÂú×ãÒÔÉÏÈý¸öÌõ¼þ£¬ Ò»¸öºÜÖ±¹ÛµÄ˼·¾ÍÊÇʹÓÃÁ½¸öÒýÇæÖ´ÐÐÓû§SQL£¬È»ºó¶Ô±Èÿ¸öÒýÇæµÄÖ´Ðнá¹ûºÍ×ÊÔ´ÏûºÄ¡£

    ΪÁ˲»Ó°ÏìÓû§ÏßÉÏÊý¾Ý£¬Ê¹ÓÃÁ½¸öÒýÇæÖ´ÐÐÓû§SQLÓÐÁ½¸ö¿ÉÑ¡·½°¸£º

  • ¸´ÓÃÏÖÓеÄSQLÈÎÎñµ÷¶Èϵͳ£¬ÔÙ²¿ÊðÒ»Ì×SQLÈÎÎñµ÷¶ÈϵͳÓÃÀ´Ç¨ÒÆ£¬Õâ¸öϵͳÓëÉú²ú»·¾³ÎïÀí¸ôÀ룻
  • ¿ª·¢Ò»¸öSQLË«Åܹ¤¾ß£¬¿ÉÒÔÖ§³ÖʹÓÃÁ½¸öÒýÇæÖ´ÐÐͬһ¸öSQLÈÎÎñ£»
  • ÏÂÃæÏêϸ½éÉÜÕâÁ½¸ö·½°¸£º

    ¨… 1. ·½°¸Ò»£º¸´ÓÃÏÖÓеÄSQLÈÎÎñµ÷¶Èϵͳ

    ÔÙ²¿ÊðÒ»Ì×SQLÈÎÎñÖ´ÐÐϵͳÓÃÀ´Ê¹ÓÃSparkÖ´ÐÐËùÓеÄSQL£¬°üÀ¨HDFS£¬HiveServer2&MetaStoreºÍSpark£¬DataStudio¡£Ð²¿ÊðµÄϵͳÐèÒªÖÜÆÚÐÔ´ÓÉú²ú»·¾³Í¬²½ÈÎÎñÐÅÏ¢£¬ÔªÊý¾ÝÐÅÏ¢ºÍHDFSÊý¾Ý£¬ÔÚÕâ¸öв¿ÊðµÄϵͳÖаÑHive SQLÈÎÎñ¸Ä³ÉSpark SQLÀàÐÍÈÎÎñ£¬ÕâÑùÒ»¸öÓû§µÄSQLÔÚÔ­ÓÐϵͳÖÐʹÓÃHive SQLÖ´ÐУ¬ÔÚв¿ÊðµÄϵͳÖÐʹÓÃSparkÖ´ÐС£ÈçÏÂͼËùʾ£¬À¶É«µÄ±íʾÐèҪв¿ÊðµÄ×Óϵͳ¡£

    ¨… 2. ·½°¸¶þ£º¿ª·¢Ò»¸öSQLË«Åܹ¤¾ß

    SQLË«Åܹ¤¾ß£¬¿ÉÒÔÏßÏÂʹÓÃÁ½¸öÒýÇæÖ´ÐÐÓû§µÄSQL£¬¾ßÌåÁ÷³ÌÈçÏ£º

  • SQLÊÕ¼¯£º Óû§µÄSQLÊÇÔÚHS2ÉÏÖ´Ðеģ¬ËùÒÔÀíÂÛÉÏͨ¹ýHS2¿ÉÒÔÊÕ¼¯µ½ËùÓеÄSQL£»
  • SQL¸Äд£º Ö´ÐÐÓû§Ô­Ê¼SQL»á¸²¸ÇÏßÉÏÊý¾Ý£¬ËùÒÔÔÚÖ´ÐÐǰÐèÒª¸ÄдSQL£¬°ÑSQLµÄÊä³öµÄ¿â±íÃûÌæ»»ÎªÓÃÀ´Ç¨ÒƲâÊԵĵĿâ±íÃû£»
  • SQLË«ÅÜ£º ·Ö±ðʹÓÃHiveºÍSparkÖ´ ÐиÄдºóµÄSQL£»
  • ¨… 3. ·½°¸¶Ô±È

  • ·½°¸Ò»
  • ÓÅ ÊÆ
  • ¸ôÀëÐÔºÃ,µ¥¶ÀµÄSQLÖ´ÐÐϵͳ²»»áÓ°ÏìÉú²úÈÎ Îñ£¬Ò²²»»áÓ° ÏìÒµÎñÊý¾Ý£»
  • ÁÓÊÆ
  • ÐèÒªµÄ×ÊÔ´¶à£ºÔËÐжà¸ö×ÓϵͳÐèÒª½Ï¶à ÎïÀí×Ê Ô´ £»
  • ²¿Êð¸´ÔÓ£º²¿Êð¶à¸ö×Óϵͳ£¬ÐèÒª¶à¸ö²» ͬµÄÍŶÓÏ໥ÅäºÏ£»
  • ÈÝÒ׳ö´í£º×Óϵͳ¼äÐèÒªÖÜÆÚÐÔͬ²½£¬ÈÎ ºÎÒ»¸ö×Óϵͳͬ²½³öÎÊÌ⣬¶¼¿É Äܵ¼ ÖÂÖ´ÐÐ S QLʧ°Ü£»
  • ·½°¸¶þ
  • ÓÅ ÊÆ

  • ·Ç³£ÇáÁ¿£¬²»ÐèÒª²¿ÊðºÜ¶àϵͳ£¬¶øÇÒ¶ÔÎïÀí×ÊÔ´ÐèÒª²»¸ß£»
  • ÁÓÊÆ
  • ÓëÉú²ú¹«¹²Ò»Ì×»·¾³£¬»Ø·ÅʱÓÐÓ°ÏìÓû§Êý¾Ý¶Ô·çÏÕ£»
  • ÐèÒª¿ª·¢SQLÊÕ¼¯£¬SQL¸ÄдºÍSQLË«ÅÜϵͳ£»
  • ¾­¹ýȨºâ£¬ ÎÒÃǾö¶¨²ÉÓ÷½°¸¶þ£¬ ÒòΪ£º
  • ͨ¹ýHiveServerÊÕ¼¯ËùÓÐSQL£¬SQL¸ÄдºÍSQLË«ÅÜÂß¼­ÇåÎú£¬¿ª·¢³É±¾¿É¿Ø£»
  • ´´½¨³¬¶ÁÕʺţ¬¶ÔËùÓпâ±íÓжÁȨÏÞ£¬µ«Ö»¶ÔÓû§Ç¨ÒƵIJâÊÔ¿âÓÐдȨÏÞ£¬¿ÉÒÔ±ÜÃâÓ°ÏìÓû§Êý¾ÝµÄ·çÏÕ£»
  • 3. Ç¨ÒÆ·½°¸ÏêϸÉè¼Æ

    1. Hive SQLÌáÈ¡

    Hive SQLÌáÈ¡°üÀ¨ÒÔϲ½Ö裺

  • ¸ÄÔìHiveHistoryImpl£¬Ã¿¸ösessionÄÚÖ´ÐеÄËùÓÐSQLºÍcommand±£´æµ½HiveServer2µÄÒ»¸ö±¾µØÎļþÖУ¬ÕâЩÎļþ°´Ìì×éÖ¯£¬Ã¿ÌìÒ»¸öĿ¼
  • ¶¨Ê±½«Ç°Ò»ÌìµÄHistoryĿ¼ÉÏ´«µ½hdfs
  • ¿ª·¢HiveHistoryParser

    HiveHistoryParserµÄÖ÷Òª¹¦ÄÜÊÇ£º

  • ÿÌì´ÓHDFSÏÂÔØËùÓÐHiveServer2µÄHistoryÎļþ£»
  • SQLÈ¥ÖØ£ºDataStudioÉϵÄÒ»¸öSQLÈÎÎñ¿ÉÄÜÒ»ÌìÖ´Ðжà´Î(±ÈÈçСʱÈÎÎñ)£¬ÈÎÎñÖ´ÐÐÒ»´Î»áÉú³ÉÒ»¸öеÄÖ´ÐÐId£¬Ö»±£ÁôÒ»ÌìÖÐ×î´óµÄÖ´ÐÐIdµÄSQL£»
  • ºÏ²¢SQL£ºÒ»¸öshellÈÎÎñ¿ÉÄܽ¨Á¢¶à¸ösessionÖ´ÐÐSQL£¬ÎªÁ˺óÃæÇ¨ÒÆshellÈÎÎñ£¬ÐèÒª°Ñ¶à¸ösessionµÄSQLºÏ²¢µ½Ò»Æð£»
  • Êä³öParse½á¹û£º°üÀ¨¶à¸öSQLÎļþºÍmetaÎļþ:
  • ÿ¸öÈÎÎñÖ´ÐеÄSQL±£´æµ½Ò»¸öÎļþÖУ¬ÎļþÃûÊÇÈÎÎñÃû³Æ¼ÓÖ´ÐÐId£¬ÎÒÃdzÆ×÷ ԭʼSQLÎļþ £»
  • metaÎļþ°üº¬SQLÎļþ·¾¶£¬ÈÎÎñÃû³Æ£¬ÏîÄ¿Ãû³Æ£¬Óû§Ãû£»
  • 2. SQL¸Äд&Ë«ÅÜ

    SQL¸Äд»á¶ÔÉÏÒ»²½Éú³ÉµÄÿ¸öԭʼSQLÎļþÖ´ÐÐÒÔϲ½Ö裺

  • ʹÓÃSparkµÄSessionState¶ÔSQLÎļþÖðÐзÖÎö£¬Ê¶±ðÊÇ·ñ°üº¬ÒÔÏÂÁ½Àà×Ӿ䣺
  • insert overwrite into
  • create table as select
  • Èç¹û°üº¬ÉÏÃæµÄÁ½Àà×Ӿ䣬ÔòÌáȡдÈëµÄÄ¿±ê¿â±íÃû³Æ£»
  • ÔÚ²âÊÔ¿âÖд´½¨ÓëÄ¿±ê¿â±íschemaÍêȫһÖµÄÁ½¸ö²âÊÔ±í£»
  • ·Ö±ðʹÓÃÉÏÒ»²½´´½¨µÄ²âÊÔ¿â±íÌæ»»Ô­Ê¼SQLÎļþÖеĿâ±íÃûÉú³ÉÓÃÓڻطŵÄSQLÎļþ£¬Ò»¸öԭʼSQLÎļþ¸Äдºó»áÉú³ÉÁ½¸öSQLÎļþ£¬ÓÃÓÚºóÃæÁ½¸öÒýÇæ·Ö±ðÖ´ÐУ»
  • SQLË«Åܲ½ÖèÈçÏ£º

  • ²¢·¢µÄʹÓÃSparkºÍHiveÖ´ÐÐÉÏÒ»²½Éú³ÉµÄÁ½¸öSQLÎļþ£»
  • ¼Ç¼ʹÓÃÁ½ÖÖÒýÇæÖ´ÐÐSQLʱÆô¶¯µÄApplicationºÍÔËÐÐʱ¼ä£»
  • Êä³ö»Ø·Å½á¹ûµ½ÎļþÖУ¬Ö´ÐÐÿ¸öSQLÎļþ¶Ô»áÉú³ÉÒ»Ìõ½á¹û¼Ç¼£¬ °üÀ¨Hive ºÍSpark Ö´ÐÐSQLµÄʱ¼ä£¬Æô¶¯µÄApplicationÁÐ±í£¬ºÍÊä³öµÄÄ¿±ê¿â±íÃû³ÆµÈ£¬ ÈçÏÂͼËùʾ£º

    3. ½á¹û¶Ô±È

    ½á¹û¶Ô±Èʱ»á±éÀúÿ¸ö»Ø·Å¼Ç¼£¬Í³¼ÆÒÔÏÂÖ¸±ê£º

    ¾ßÌåÁ÷³ÌÈçÏ£º

  • ²éѯSpark SQLºÍHive SQLÊä³öµÄ¿â±íµÄ¼Ç¼Êý£»
  • ²éѯÁ½ÖÖÒýÇæÊä³öµÄHDFSÎļþ¸öÊýºÍ´óС£»
  • ¶Ô±ÈÁ½ÖÖÒýÇæµÄÊä³öÊý¾Ý£»
  • ·Ö±ð¶ÔSparkºÍHiveµÄ²ú³ö±íÖ´ÐÐÒÔÏÂSQL£¬»ñÈ¡±íµÄ¸ÅÒªÐÅÏ¢

    ±È½ÏÁ½ÕűíµÄ¸ÅÒªÐÅÏ¢£º

  • Èç¹ûËùÓжÔÓ¦ÁеÄÖµÏàͬÔòÈÏΪ½á¹ûÒ»Ö£»
  • Èç¹û´æÔÚ²»Ò»ÖµÄÁУ¬Èç¹û¸ÃÁÐÊÇÊýÖµÀàÐÍ£¬Ôò¶Ô¸ÃÁмÆËã×î´ó¾«¶È²îÒ죬 SQLÈçÏ£º
  • ͳ¼ÆÁ½ÖÖÒýÇæÆô¶¯µÄApplicationÏûºÄµÄvcoreºÍmemory×ÊÔ´£»
  • Êä³ö¶Ô±È½á¹û£¬ °üÀ¨ÔËÐÐʱ¼ä£¬ ÏûºÄµÄvcoreºÍmemory£¬ÊÇ·ñÒ»Ö£¬Èç¹û²»Ò»ÖÂÊä³ö²»Ò»ÖµÄÁÐÃûÒÔ¼°×î´ó²îÒ죻
  • »ã×ÜÊý¾Ý½á¹û£¬²¢¶Ô»Ø·ÅµÄSQL·ÖΪÒÔϼ¸Àࣺ
  • ¿ÉÇ¨ÒÆ£º Êý¾ÝÍêȫһÖ£¬ ²¢ÇÒʹÓÃSpark SQLÖ´ÐÐʹÓøüÉÙ×ÊÔ´£¬°üÀ¨ÔËÐÐʱ¼ä£¬vcoreºÍmemoryÒÔ¼°ÎļþÊý£»
  • ¾­Ñé¿ÉÇ¨ÒÆ£º ÔÚÅŲ鲻һÖÂʱ·¢ÏÖÓÐЩÊÇÂß¼­ÕýÈ·µÄ (±ÈÈçcollect_set½á¹û˳Ðò²»Ò»ÖÂ)£¬Èç¹ûÓÐЩÈÎÎñ·ûºÏÕâЩ¾­Ñ飬ÔòÈÏΪÊǾ­Ñé¿ÉÇ¨ÒÆ£»
  • Êý¾Ý²»Ò»Ö£º Á½ÖÖÒýÇæ²ú³öµÄ½á¹û´æÔÚ²»Ò»ÖµÄÁУ¬¶øÇÒûÓÐÃüÖо­Ñ飻
  • Time_High£º Á½ÖÖÒýÇæ²ú³öµÄ½á¹ûÍêȫһÖ£¬µ«ÊÇSparkÖ´ÐÐSQLµÄÔËÐÐʱ¼ä´óÓÚHiveÖ´ÐÐSQLµÄʱ¼ä£»
  • Cpu_High£º Á½ÖÖÒýÇæ²ú³öµÄ½á¹ûÍêȫһÖ£¬µ«ÊÇSparkÖ´ÐÐSQLÏûºÄµÄcpu×ÊÔ´´óÓÚHiveÖ´ÐÐSQLÏûºÄµÄcpu×ÊÔ´£»
  • Memory_High£º Á½ÖÖÒýÇæ²ú³öµÄ½á¹ûÍêȫһÖ£¬µ«ÊÇSparkÖ´ÐÐSQLÏûºÄµÄmemory×ÊÔ´´óÓÚHiveÖ´ÐÐSQLÏûºÄµÄmemory×ÊÔ´£»
  • Files_High£º Á½ÖÖÒýÇæ²ú³öµÄ½á¹ûÍêȫһÖ£¬µ«ÊÇSparkÖ´ÐÐSQL²úÉúµÄÎļþÊý´óÓÚHiveÖ´ÐÐSQL²úÉúµÄÎļþÊý£»
  • Óï·¨²»¼æÈÝ£º ÔÚSQL¸Äд½×¶Î½âÎöSQLʱ±¨Óï·¨´íÎó£»
  • ÔËÐÐʱÒì³££º ÔÚË«Åܽ׶Σ¬Hive SQL»òÕßSpark SQLÔÚÔËÐйý³ÌÖÐʧ°Ü£»
  • 4. Ç¨ÒÆ

    Ç¨ÒÆ±È½Ï¼òµ¥£¬ ²½ÖèÈçÏ£º

  • ÕûÀíÇ¨ÒÆÈÎÎñÁбíÒÔ¼°¶ÔÓ¦µÄÅäÖòÎÊý£»
  • µ÷ÓÃDataStudio½Ó¿Ú°ÑÈÎÎñÀàÐÍÐÞ¸ÄΪSparkSQLÀàÐÍ£»
  • ÖØÅÜÈÎÎñ£»
  • 5. ÎÊÌâÅŲé&ÐÞ¸´

    Èç¹ûSQLÊÇ¡°¿ÉÇ¨ÒÆ¡±»òÕß¡°¾­Ñé¿ÉÇ¨ÒÆ¡±£¬¿ÉÒÔÖ´ÐÐÇ¨ÒÆ£¬ÆäËüµÄÈÎÎñÐèÒªÅŲ飬Õⲿ·ÖÊÇ×îºÄʱºÄÁ¦µÄ£¬Ç¨Òƹý³ÌÖд󲿷Öʱ¼ä¶¼ÊÇÔÚµ÷²éºÍÐÞ¸´ÕâЩÎÊÌâ¡£ÐÞ¸´Ö®ºóÔÙÖ´ÐдÓÍ·¿ªÊ¼£¬ÌáÈ¡×îÐÂÈÎÎñµÄSQL£¬È»ºóSQL¸ÄдºÍË«ÅÜ£¬½á¹û¶Ô±È£¬Âú×ãÇ¨ÒÆÌõ¼þÔò˵Ã÷ÐÞ¸´ÁËÎÊÌ⣬¿ÉÒÔÇ¨ÒÆ£¬·ñÔò¼ÌÐøÅŲ飬Òò´ËÇ¨ÒÆ¹ý³ÌÊÇÒ»¸öÑ­»·Íù¸´µÄ¹ý³Ì£¬Ö±µ½SQLÂú×ãÇ¨ÒÆÌõ¼þ£¬ÕûÌå¹ý³ÌÈçÏÂͼËùʾ£º

    4. ÒýÇæ²îÒì

    ÔÚÇ¨ÒÆµÄ¹ý³ÌÖÐÎÒÃÇ·¢ÏÖÁ˺ܶàÁ½ÖÖÒýÇæ²»Í¬µÄµØ·½£¬Ö÷Òª°üÀ¨Óï·¨²îÒ죬UDF²îÒ죬¹¦ÄܲîÒìºÍÐÔÄܲîÒì¡£

    1. Óï·¨²îÒì

    ÓÐЩHive SQLʹÓÃSpark SQLÖ´ÐÐÔÚÓï·¨·ÖÎö½×¶Î¾Í»á³ö´í£¬ÓÐЩÓï·¨²îÒìÎÒÃÇÔÚÄÚ²¿°æ±¾ÒѾ­ÐÞ¸´£¬Ä¿Ç°ÕýÔÚ·´À¡ÉçÇø£¬ÕýÔÚºÍÉçÇøÌÖÂÛ£¬»¹ÓÐһЩĿǰûÓÐÐÞ¸´¡£

    1.1 ÓÃÀýÉè¼Æ

  • UDTFаæinitialize½Ó¿ÚÖ§³Ö£¬¶ÔÆëHive SQL [SPARK-33704]
  • Window Function ²»Ö§³ÖûÓÐorder by×Ó¾äµÄ³¡¾°
  • Join ×Ó²éѯ֧³Örand Ëæ»ú·Ö²¼Ìõ¼þ£¬ÔöÇ¿Óï·¨¼æÈÝ
  • Orc/Orcfile ´æ´¢ÀàÐÍ´´½¨Óï¾äÆÁ±ÎROW FORMAT DELIMITEDÏÞÖÆ [SPARK-33755]
  • `DB.TB` ʶ±ðÖ§³Ö£¬¶ÔÆëHive SQL [SPARK-33686]
  • Ö§³ÖCREATE TEMPORARY TABLE
  • ¸÷ÀàHive UDFµÄÖ§³Öµ÷Óã¬Ö÷Òª°üÀ¨get_json_object£¬datediff£¬unix_timestamp£¬to_date£¬collect_set£¬date_sub [SPARK-33721]
  • DROP²»´æÔڵıíºÍ·ÖÇø£¬Spark SQL±¨´í£¬Hive SQL Õý³£ [SPARK-33637]
  • ɾ³ý·ÖÇøÊ±Ö§³ÖÉèÖùýÂËÌõ¼þ [SPARK-33691]
  • 1.2 δÐÞ¸´

  • MapÀàÐÍ×ֶβ»Ö§³ÖGROUP BY²Ù×÷
  • Operation not allowed£ºALTER TABLE CONCATENATE
  • 2. UDF²îÒì

    ÔÚÅŲéÊý¾Ý²»Ò»ÖµÄSQL¹ý³ÌÖУ¬ÎÒÃÇ·¢ÏÖÓÐЩÊÇÒòΪÊäÈëÊý¾ÝµÄ˳Ðò²»Í¬Ôì³ÉµÄ£¬ ÕâЩ²îÒìÂß¼­ÉÏÊÇÕýÈ·µÄ£¬¶øÓÐЩÊÇUDF¶ÔÒì³£ÖµµÄ´¦Àí·½Ê½²»Ò»ÖÂÔì³ÉµÄ£¬»¹ÓÐÐèҪעÒâµÄÊÇUDFÖ´Ðл·¾³²»Í¬Ôì³ÉµÄ½á¹û²îÒì¡£

    2.1 ˳Ðò²îÒì

    ÕâЩÒòΪÊäÈëÊý¾ÝµÄ˳Ðò²»Í¬Ôì³ÉµÄ½á¹û²îÒìÂß¼­ÉÏÊÇÒ»Öµģ¬¶ÔÒµÎñÎÞÓ°Ï죬Òò´ËÔÚÇ¨ÒÆ¹ý³ÌÖпÉÒÔºöÂÔÕâЩ²îÒ죬ÕâÀà²îÒìµÄSQLÈÎÎñÊôÓÚ¾­Ñé¿ÉÇ¨ÒÆ¡£

    2 .1.1 collect_set

  • ¼ÙÉèÊý¾Ý±íÈçÏ£º
  • Ö´ÐÐÈçÏÂSQL£º
  • Ö´Ðнá¹û£º
  • ²îÒì˵Ã÷£º
  • collect_setÖ´Ðнá¹ûµÄ˳ÐòÈ¡¾öÓڼǼ±»É¨ÃèµÄ˳Ðò£¬Spark SQLÖ´Ðйý³ÌÖÐÊǶà¸öÈÎÎñ²¢·¢Ö´Ðеģ¬Òò´Ë¼Ç¼±»¶ÁÈ¡µÄ˳ÐòÊÇÎÞ·¨±£Ö¤µÄ.

    2 .1.2 collect_list
  • ¼ÙÉèÊý¾Ý±íÈçÏ£º
  • Ö´ÐÐÈçÏÂSQL£º
  • Ö´Ðнá¹û£º
  • ²îÒì˵Ã÷£º

    collect_listÖ´Ðнá¹ûµÄ˳ÐòÈ¡¾öÓڼǼ±»É¨ÃèµÄ˳Ðò£¬Spark SQLÖ´Ðйý³ÌÖÐÊǶà¸öÈÎÎñ²¢·¢Ö´Ðеģ¬Òò´Ë¼Ç¼±»¶ÁÈ¡µÄ˳ÐòÊÇÎÞ·¨±£Ö¤µÄ¡£

    2 .1.3 row_number

  • ¼ÙÉèÊý¾Ý±íÈçÏ£º
  • Ö´ÐÐÈçÏÂSQL£º
  • Ö´Ðнá¹û£º
  • ²îÒì˵Ã÷£º
  • Ö´ÐÐrow_numberʱ£¬ÔÚÒ»¸ö·ÖÇøÄÚ²¿£¬¿ÉÒÔ±£Ö¤order by×Ö¶ÎÊÇÓÐÐòµÄ£¬¶ÔÓÚ·Ç·ÖÇø·Çorder by×ֶεÄ˳ÐòÊÇûÓб£Ö¤µÄ¡£ 2 .1.4 mapÀàÐÍ×ֶζÁд
  • Êý¾Ý±í½¨±íÓï¾ä£º
  • ¼ÙÉèÊý¾Ý±íÈçÏ£º
  • Ö´ÐÐÈçÏÂSQL£º
  • Ö´Ðнá¹û£º
  • ²îÒì˵Ã÷£º
  • MapÀàÐÍÊÇÎÞÐòµÄ£¬Í¬Ò»·ÝÊý¾Ý£¬ÔÚqueryʱÏÔʾµÄ¸÷¸ökeyµÄ˳Ðò»áÓб仯¡£

    2 .1.5 sum(double/float)

  • ¼ÙÉèÊý¾Ý±íÈçÏ£º
  • Ö´ÐÐÈçÏÂSQL£º
  • Ö´Ðнá¹û£º
  • ²îÒì˵Ã÷£º
  • ÕâÊÇÓÉfloat/doubleÀàÐ͵ıíʾ·½Ê½¾ö¶¨µÄ£¬¸¡µãÊý²»ÄܱíʾËùÓеÄʵÊý£¬ÔÚÖ´ÐÐÔËËã¹ý³ÌÖлáÓо«¶È¶ªÊ§£¬¶ÔÓÚ¼¸¸ö¸¡µãÊý£¬Ö´Ðмӷ¨Ê±µÄ˳Ðò²»Í¬£¬½á¹ûÓÐʱ¾Í»á²»Í¬¡£

    2 .1.6 ˳Ðò²îÒì½â¾ö·½°¸ ÓÉÒÔÉÏUDFÔì³ÉµÄ²îÒì¿ÉÒÔºöÂÔ£¬Ïà¹ØÈÎÎñÈç¹ûÔÚ×ÊÔ´·½ÃæÒ²ÓнÚÊ¡£¬ÄÇô×îÖÕµÄ״̬ÊǾ­Ñé¿ÉÇ¨ÒÆ×´Ì¬£¬·ûºÏÇ¨ÒÆÌõ¼þ¡£

    2.2 ·Ç˳Ðò²îÒì ÏÂÃæ¼¸¸öÈÕÆÚ/ʱ¼äÏà¹Øº¯Êý£¬µ±ÓÐÒì³£ÊäÈëÊÇSpark SQL»á·µ»ØNULL£¬¶øHive SQL»á·µ»ØÒ»¸ö·ÇNULLÖµ¡£

    2 .2.1 datediff

    ¶ÔÓÚÒì³£ÈÕÆÚ£¬±ÈÈç0000-00-00Ö´ÐÐdatediffÁ½Õß»á´æÔÚ²îÒì¡£

    2 .2.2 unix_timestamp

    ¶ÔÓÚ24µãSparkÈÏΪÊÇ·Ç·¨µÄ·µ»ØNULL£¬¶øHiveÈÎÎñÊÇÕý³£µÄ£¬Ï±íʱִÐÐunix_timestamp(concat('2020-06-01', ' 24:00:00'))ʱµÄ²îÒì¡£

    2 .2.3 to_date

    µ±Ô»òÕßÈÕÊÇ00ʱHiveÈÔÈ»»á·µ»ØÒ»¸öÈÕÆÚ£¬µ«ÊÇSpark»á·µ»ØNULL¡£

    2 .2.4 date_sub µ±Ô»òÕßÈÕÊÇ00ʱHiveÈÔÈ»»á·µ»ØÒ»¸öÈÕÆÚ£¬µ«ÊÇSpark»á·µ»ØNULL¡£

    2 .2.5 date_add µ±Ô»òÕßÈÕÊÇ00ʱHiveÈÔÈ»»á·µ»ØÒ»¸öÈÕÆÚ£¬µ«ÊÇSpark»á·µ»ØNULL¡£

    2 .2.6 ·Ç˳Ðò²îÒì½â¾ö·½°¸

    ÕâЩ²îÒìÊÇÊÇÒòΪ¶ÔÒì³£UDF²ÎÊýµÄ´¦ÀíÂß¼­²»Í¬Ôì³ÉµÄ£¬ËäÈ»Spark SQL·µ»ØNULL¸üºÏÀí£¬µ«ÊÇÏÖÓеÄHive SQLÈÎÎñÓû§ÊÊÓ¦ÁËÕâÖÖ´¦ÀíÂß¼­£¬ËùÒÔΪÁ˲»Ó°ÏìÏÖÓÐSQLÈÎÎñ£¬ÎÒÃǶÔÕâÀàUDF×öÁ˼æÈÝ´¦Àí£¬Óû§¿ÉÒÔͨ¹ýÅäÖÃÀ´¾ö¶¨Ê¹ÓÃHiveÄÚÖú¯Êý»¹ÊÇSparkµÄÄÚÖÃUDF¡£

    2.3 UDFÖ´Ðл·¾³²îÒì

    2 .3.1 ²îÒì˵Ã÷

    »ùÓÚMapReduceµÄHive SQLÒ»¸öTask»áÆô¶¯Ò»¸ö½ø³Ì£¬½ø³ÌÖеÄÖ÷Ï̸߳ºÔðÊý¾Ý´¦Àí£¬ Òò´ËÔÚHive SQLÖÐUDFÖ»»áÔÚµ¥³ÌÖÐÖ´ÐС£

    ¶øSpark Ò»¸öExecutor¿ÉÄÜ»áÆô¶¯¶à¸öTask£¬ÈçÏÂͼËùʾ¡£Òò´ËÔÚSpark SQLÖÐ×Ô¶¨ÒåUDFʱÐèÒª¿¼ÂÇḬ̈߳²È«ÎÊÌâ¡£

    2 .3.2 ²îÒì½â¾ö·½°¸ ÏÂÃæÊÇÒ»¸ö·ÇḬ̈߳²È«µÄʾÀý£¬UDFÄÚ²¿¹²Ïí¾²Ì¬±äÁ¿£¬ÔÚÖ´ÐÐUDFʱ»á¶ÁдÕâ¸ö¾²Ì¬±äÁ¿¡£

    ½â¾ö·½°¸Ò²±È½Ï¼òµ¥£¬Ò»ÖÖÊǼÓËø£¬ÈçÏÂͼËùʾ£º

    ÁíÒ»ÖÖÊÇÈ¡Ïû¾²Ì¬³ÉÔ±£¬ÈçÏÂͼËùʾ£º

    3. ÐÔÄÜ&¹¦ÄܲîÒì

    3.1 СÎļþºÏ²¢

    Hive SQL¿ÉÒÔͨ¹ýÉèÖÃÒÔÏÂÅäÖúϲ¢Ð¡Îļþ£¬MR Job½áÊøºó£¬ÅжÏÉú³ÉÎļþµÄƽ¾ù´óС£¬Èç¹ûСÓÚ·§Öµ£¬¾ÍÔÙÆô¶¯Ò»¸öJobÀ´ºÏ²¢Îļþ¡£

    ĿǰSpark SQL²»Ö§³ÖСÎļþºÏ²¢£¬ÔÚÇ¨ÒÆ¹ý³ÌÖУ¬ÎÒÃǾ­³£·¢ÏÖSpark SQLÉú³ÉµÄÎļþÊý¶àÓÚHive SQL£¬Îª´ËÎÒÃDzο¼Hive SQLµÄʵÏÖÔÚSpark SQLÖÐÒýÈëÁËСÎļþºÏ²¢¹¦ÄÜ¡£

    ÔÚInsertIntoHiveTable ÖÐÅжÏÈç¹û¿ªÆôСÎļþºÏ²¢£¬²¢ÇÒÎļþµÄƽ¾ù´óСµÍÓÚãÐÖµÔòÖ´Ðкϲ¢£¬ºÏ²¢Ö®ºóÔÙÖ´ÐÐloadTable»òÕßloadPartition²Ù×÷¡£

    3.2 Spark SQLÖ§³ÖClusterģʽ

    Hive SQLÈÎÎñÊÇDataStudioͨ¹ýbeeline -fÖ´Ðеģ¬¿Í»§¶ËÖ»¸ºÔð·¢ËÍSQLÓï¾ä¸øHS2£¬ÒѾ­»ñȡִÐнá¹û£¬Òò´ËÊǷdz£ÇáÁ¿µÄ¡£¶øSpark SQLÖ»Ö§³ÖClientģʽ£¬DriverÔÚClient½ø³ÌÖУ¬Òò´ËClientģʽִÐÐSpark SQLʱ£¬ÓÐʱ»áÕ¼ÓúܶàµÄ×ÊÔ´£¬DataStudioÎÞ·¨¸ÐÖªSpark DriverµÄ×ÊÔ´¿ªÏú£¬ËùÒÔÔÚDataStudio²ãÃæ»á´øÀ´ÒÔÏÂÎÊÌ⣺

  • ÐγÉ×ÊÔ´Èȵ㣬ӰÏìÈÎÎñÖ´ÐУ»
  • Ëæ×ÅÇ¨ÒÆµ½Spark SQLµÄÈÎÎñÔ½À´Ô½¶à£¬DataStudioÐèÒªÔ½À´Ô½¶àµÄ»úÆ÷µ÷¶ÈSQLÈÎÎñ£»
  • ClientģʽÈÕÖ¾±£ÁôÔÚ±¾µØ£¬ÅŲéÎÊÌâʱ²»·½±ã¿´ÈÕÖ¾£»
  • ËùÒÔÎÒÃÇ¿ª·¢ÁËSpark SQLÖ§³ÖClusterģʽ£¬¸Ãģʽֻ֧³Ö·Ç½»»¥Ê½·½Ê½Ö´ÐÐSQL£¬°üÀ¨spark-sql -eºÍspark-sql -f£¬²»Ö§³Ö½»»¥Ê½Ä£Ê½¡£

    3.3 ·ÖÇø¼ô²ÃÓÅ»¯

    Ç¨ÒÆ¹ý³ÌÖÐÎÒÃÇ·¢Ïִ󲿷ÖÈÎÎñµÄ·ÖÇøÌõ¼þ°üÀ¨concat£¬ concat_ws£¬ substrµÈUDF£¬ HiveServer2»áµ÷ÓÃMetaStoreµÄgetPartitionsByExpr·½·¨·µ»Ø·ûºÏ·ÖÇøÌõ¼þµÄÓÐЧ·ÖÇø£¬±ÜÃâÎÞЧµÄɨÃ裬 µ«ÊÇSpark SQLµÄ·ÖÇø¼ô²ÃÖ»Ö§³ÖÓÉAttributeºÍLiteral×é³Ékey/value½á¹¹µÄν´ÊÌõ¼þ£¬ÕâÒ»·½Ãæµ¼ÖÂÎÞ·¨ÓÐЧ·ÖÇø¼ô²Ã£¬»á²éѯËùÓзÖÇøµÄÊý¾Ý£¬ Ôì³É¶ÁÈ¡´óÁ¿ÎÞЧÊý¾Ý£¬ÁíÒ»·½Ãæ²éѯËùÓзÖÇøµÄÔªÊý¾Ý£¬µ¼ÖÂMetaStore¶ÔMySQL²éѯѹÁ¦¼¤Ôö£¬µ¼ÖÂmysql½ø³Ì°Ñcpu´òÂú¡£ÎÒÃÇÔÚÉçÇø°æ±¾µÄ»ù´¡Éϵü´úÖ§³ÖÁ˶àÖÖ³¡¾°µÄ·ÖÇøÁªºÏ¼ô²Ã£¬Ä¿Ç°Äܹ»¸²¸ÇÉú²úÈÎÎñ90%ÒÔÉϵij¡¾°¡£

  • concat/concat_wsÁªºÏ¼ô²Ã³¡¾°
  • substr ÁªºÏ¼ô²Ã³¡¾°
  • concat/concat_ws&substr×éºÏ³¡¾°
  • ĿǰÒѾ­·´À¡ÉçÇø£¬ÕýÔÚÌÖÂÛÖУ¬¾ßÌå¿É²Î¿¼[SPARK-33707][SQL] Support multiple types of function partition pruning on hive metastore

    5. Ç¨ÒÆ½á¹û

    ¾­¹ý6¸ö¶àÔµÄÍŶӵÄŬÁ¦£¬ÎÒÃÇÇ¨ÒÆÁË1Íò¶à¸öHive SQLÈÎÎñµ½Spark SQL£¬ÔÚÇ¨ÒÆ¹ý³ÌÖУ¬Ëæ×Åspark SQLÈÎÎñµÄÔö¼Ó£¬SQLÈÎÎñµÄÖ´ÐÐʱ¼äÔÚÖð½¥¼õÉÙ£¬´Ó×î³õµÄ1000+ÃëϽµµ½600+ÃëÈçÏÂͼËùʾ£º

    Ç¨ÒÆºóSpark SQLÈÎÎñÕ¼±È85%£¬SQLÈÎÎñÔËÐÐʱ¼ä½ÚÊ¡40%£¬¼ÆËã×ÊÔ´½ÚÊ¡21%£¬ÄÚ´æ×ÊÔ´½ÚÊ¡49%£¬Ç¨ÒƵÄÊÕÒæÊǷdz£´óµÄ¡£

    6. ÏÂÒ»²½¼Æ»®

    Ç¨ÒÆÖ®ºóSparkÒѾ­³ÉΪSQLÈÎÎñµÄÖ÷Á÷ÒýÇæ£¬µ«ÊÇ»¹ÓдóÁ¿µÄshellÀàÐÍÈÎÎñʹÓÃHiveÖ´ÐÐSQL£¬ËùÒÔºóÐøÎÒÃÇ»áÇ¨ÒÆshellÀàÐÍÈÎÎñ£¬°ÑshellÖеÄHive SQLÇ¨ÒÆµ½Spark SQL¡£

    ÔÚÉú²ú»·¾³ÖУ¬ÓÐЩshuffle ±È½ÏÖеÄÈÎÎñ¾­³£»áÒòΪshuffle fetchÖØÊÔÉõÖÁʧ°Ü£¬ÎÒÃÇÏëÓÅ»¯Spark External Shuffle Service¡£

    ÉçÇøÍÆ³öSpark 3.xÒ²°ëÄê¶àÁË£¬ÔÚ¹¦ÄܺÍÐÔÄÜÉÏÓкܴóÌáÉý£¬ËùÒÔÎÒÃÇÒ²ÏëºÍÉçÇø±£³Öͬ²½£¬Éý¼¶Sparkµ½3.x°æ±¾¡£

     

       
    1642 ´Îä¯ÀÀ       30
    Ïà¹ØÎÄÕÂ

    »ùÓÚ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ÔÆÆ½Ì¨-Ö÷Á÷Êý¾Ý¿â¼°´æ´¢¼¼Êõ