hadoop-common-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Hadoop Wiki] Update of "Hive/DeveloperGuide" by andi_maulana
Date Sat, 20 Nov 2010 04:32:20 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Hadoop Wiki" for change notification.

The "Hive/DeveloperGuide" page has been changed by andi_maulana.
The comment on this change is: */GET=HIVE.
http://wiki.apache.org/hadoop/Hive/DeveloperGuide?action=diff&rev1=28&rev2=29

--------------------------------------------------

- #pragma section-numbers 2
- = Developer Guide =
- <<TableOfContents>>
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="id" lang="id" id="facebook" class=" no_js">
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
+ <meta http-equiv="Content-language" content="id" />
+ <script type="text/javascript">
+ //<![CDATA[
+ CavalryLogger=false;window._is_quickling_index="";if(window==window.top)window.Log=(function(){function g(){var n=Math.random();var o='';for(var m=0;m<4;m++){n=n*62;var p=Math.floor(n)%62;if(p>=10&&p<36){p=String.fromCharCode(p-10+65);}else if(p>=36&&p<62)p=String.fromCharCode(p-36+97);o+=p;}return o;}var k='_e_',l=(window.name||'').toString();l=(l.length==7&&k==l.substr(0,3))?l.substr(3):(window.name=k+g()).substr(3);var i=k+l+'_',f=new Date(+new Date()+604800000).toGMTString(),d=window.location.hostname.replace(/^.*(facebook\..*)$/i,'$1'),e='; expires='+f+';path=/; domain='+d,c=0,h=false,j=[];var b=function(m){return i+(c++)+'='+encodeURIComponent(m)+e;};var a=function(n){var o=(document.cookie.search(k)>=0);while(j.length>0){var p=b(j[0]);if(o&&((document.cookie.length+p.length)>3950||document.cookie.split(';').length>19))break;window.EagleEyeDev&&window.console&&console.log(j[0],'=>',p);document.cookie=p;o=true;j.shift();}if(!!n||!h&&o&&((document.cookie.length>2500||document.cookie.split(';').length>15))&&window.Arbiter&&window.OnloadEvent&&Arbiter.query(OnloadEvent.ONLOAD)){var m=new Image();h=true;m.onload=function(){h=false;a();};if(window.Env&&Env.tracking_domain){host=Env.tracking_domain;}else host='';m.src=host+'/ajax/nectar.php?asyncSignal='+(Math.floor(Math.random()*10000)+1)+'&'+(!n?'':'s=')+(+new Date());}};return function(q,m,o){var r=[l,+new Date(),q].concat(m);r.push(r.length);for(var n=0;n<r.length;n++)if(typeof r[n]=='string'){r[n]='"'+r[n].replace(/\"/g,'\\"').replace(/\n/g,'\\n')+'"';}else if(r[n]===null)r[n]='null';var p='['+r.join(',')+']';if(!o){j.push(p);}else document.cookie=b(p);a(o);};})();
+ //]]>
+ </script><noscript> <meta http-equiv=refresh content="0; URL=/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline&amp;_fb_noscript=1" /> </noscript>
  
- == Code Organization and a brief architecture ==
- === Introduction ===
- Hive comprises of 3 main components:
+ <meta name="robots" content="noodp,noydir" />
+ <meta name="description" content=" Facebook adalah sarana sosial yang menghubungkan orang-orang dengan teman dan rekan mereka lainnya yang bekerja, belajar, dan hidup di sekitar mereka. Orang-orang menggunakan Facebook untuk menjaga hubungan dengan teman, bertukar foto tanpa batas, mengirim tautan dan video, dan mengetahui lebih jauh tentang orang-orang yang mereka temui." />
+ <link rel="alternate" media="handheld" href="http://www.facebook.com/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline" />
  
-  * Serializers/Deserializers (trunk/serde) - This component has the framework libraries that allow users to develop serializers and deserializers for their own data formats. This component also contains some builtin serialization/deserialization families.
-  * MetaStore (trunk/metastore) - This component implements the metadata server which is used to hold all the information about tables and partitions that are in the warehouse.
-  * Query Processor (trunk/ql) - This component implements the processing framework for converting SQL to a graph of map/reduce jobs and also the execution time framework to run those jobs in the order of dependencies.
+     <link type="text/css" rel="stylesheet" href="http://static.ak.fbcdn.net/rsrc.php/z8/r/ezGGwkFabU-.css?_fbgz=1" />
+     <link type="text/css" rel="stylesheet" href="http://static.ak.fbcdn.net/rsrc.php/zL/r/u8Bue217GRs.css?_fbgz=1" />
+     <link type="text/css" rel="stylesheet" href="http://c.static.ak.fbcdn.net/rsrc.php/zj/r/dbvQ78fpN9S.css?_fbgz=1" />
  
- Apart from these major components, Hive also contains a number of other components. These are as follows:
+     <script type="text/javascript" src="http://e.static.ak.fbcdn.net/js_strings.php/t89599/id_ID"></script>
+     <script type="text/javascript" src="http://e.static.ak.fbcdn.net/rsrc.php/zM/r/-l61QNelcDZ.js?_fbgz=1"></script>
+ <title>Facebook | Masuk</title>
+ <noscript><meta http-equiv="X-Frame-Options" content="deny" /></noscript>
+     <link type="text/css" rel="stylesheet" href="http://f.static.ak.fbcdn.net/rsrc.php/zc/r/5ZZJC_MtJLC.css?_fbgz=1" />
+     <link type="text/css" rel="stylesheet" href="http://b.static.ak.fbcdn.net/rsrc.php/zl/r/lzaLsihFB-f.css?_fbgz=1" />
+     <link type="text/css" rel="stylesheet" href="http://f.static.ak.fbcdn.net/rsrc.php/z2/r/p6y1y21JrZi.css?_fbgz=1" />
  
-  * Command Line Interface (trunk/cli) - This component has all the java code used by the Hive command line interface.
-  * Hive Server (trunk/service) - This component implements all the APIs that can be used by other clients (such as JDBC drivers) to talk to Hive.
-  * Common (trunk/common) - This component contains common infrastructure needed by the rest of the code. Currently, this contains all the java sources for managing and passing Hive configurations(HiveConf) to all the other code components.
-  * Ant Utilities (trunk/ant) - This component contains the implementation of some ant tasks that are used by the build infrastructure.
-  * Scripts (trunk/bin) - This component contains all the scripts provided in the distribution including the scripts to run the Hive cli(bin/hive).
+   
+ <link rel="search" type="application/opensearchdescription+xml" href="http://b.static.ak.fbcdn.net/rsrc.php/zJ/r/H2SSvhJMJA-.xml?_fbgz=1" title="Facebook" />
+ <link rel="shortcut icon" href="http://e.static.ak.fbcdn.net/rsrc.php/z7/r/5875srnzL-I.ico?_fbgz=1" /></head>
+ <body class="login_page ie7 win Locale_id_ID">
+ <div id="FB_HiddenContainer" style="position:absolute; top:-10000px; width:0px; height:0px;" ></div><div id="blueBar" class=""></div><div id="globalContainer"><div id="dialogContainer"></div><div id="c4ce74f21adf779203749790"><div class="ptm clearfix" id="pageHead"><h1 id="pageLogo"><a href="http://www.facebook.com/?ref=logo" title="Beranda"></a></h1><div id="jewelCase"><div class="jewel" id="requestsWrapper"><a class="jewelToggler" id="jewelRequest" title="Permintaan Pertemanan" href="http://www.facebook.com/friends/edit/?sk=requests" onclick="this.onclick = function() &#123;CSS.toggleClass(this.parentNode, &#039;openToggler&#039;);return false;&#125;.bind(this);this.onclick();onloadRegister(function(e) &#123;e = e || window.event;e &amp;&amp; Event.stop(e);this.onclick = function(e) &#123;e = e || window.event;e &amp;&amp; Event.prevent(e);Jewel.toggle(this, &quot;[fb]requests&quot;);&#125;.bind(this);this.onclick(e);&#125;.bind(this, event));return false;" accesskey="3" rel="ignore"><span class="jewelCount"><span id="jewelRequestCount">0</span></span></a><div id="jewelBoxRequest" class="jewelBox"><div class="uiHeader uiHeaderBottomBorder jewelHeader"><div class="clearfix uiHeaderTop"><a class="uiHeaderActions rfloat" href="http://www.facebook.com/?sk=ff">Temukan Teman Anda</a><div><h3 class="uiHeaderTitle">Permintaan Pertemanan</h3></div></div></div><div id="jewelRequestsContent"><img class="jewelLoading img" src="http://f.static.ak.fbcdn.net/rsrc.php/zb/r/GsNJNwuI-UM.gif?_fbgz=1" width="16" height="11" /></div></div></div><div class="jewel jewelUnread" id="mailWrapper"><a class="jewelToggler" id="jewelMail" title="Pesan" href="http://www.facebook.com/?sk=messages&amp;ref=mb" onclick="this.onclick = function() &#123;CSS.toggleClass(this.parentNode, &#039;openToggler&#039;);return false;&#125;.bind(this);this.onclick();onloadRegister(function(e) &#123;e = e || window.event;e &amp;&amp; Event.stop(e);this.onclick = function(e) &#123;e = e || window.event;e &amp;&amp; Event.prevent(e);Jewel.toggle(this, &quot;[fb]messages&quot;);&#125;.bind(this);this.onclick(e);&#125;.bind(this, event));return false;" accesskey="4" rel="ignore"><span class="jewelCount" id="jewelOuterUnseenCount"><span id="jewelInnerUnseenCount">0</span></span></a><div id="jewelBoxMail" class="jewelBox jewelHighlightItem"><div class="uiHeader uiHeaderBottomBorder jewelHeader"><div class="clearfix uiHeaderTop"><a class="uiHeaderActions rfloat" href="/ajax/messaging/composer.php" onclick="window.Toggler &amp;&amp; Toggler.hide();" rel="dialog">Kirim Pesan Baru</a><div><h3 class="uiHeaderTitle">Pesan</h3></div></div></div><ul id="mailBoxItems"><li><img class="jewelLoading img" src="http://f.static.ak.fbcdn.net/rsrc.php/zb/r/GsNJNwuI-UM.gif?_fbgz=1" width="16" height="11" /></li></ul><div class="jewelFooter"><a class="seeMore" href="http://www.facebook.com/?sk=messages&amp;ref=mb"><span>Lihat Semua Pesan</span> <span class="seeMoreCount fss fwn fcg" id="jewelOuterInboxCount"><span id="jewelInnerInboxCount">2775</span> belum dibaca</span></a></div></div></div><div id="notificationsWrapper" class="jewel"><a class="jewelToggler" id="jewelNotif" title="Pemberitahuan" href="http://www.facebook.com/notifications.php" onclick="this.onclick = function() &#123;CSS.toggleClass(this.parentNode, &#039;openToggler&#039;);return false;&#125;.bind(this);this.onclick();onloadRegister(function(e) &#123;e = e || window.event;e &amp;&amp; Event.stop(e);this.onclick = function(e) &#123;e = e || window.event;e &amp;&amp; Event.prevent(e);Toggler.toggle(this);window.presenceNotifications &amp;&amp; presenceNotifications.loadTab();&#125;.bind(this);this.onclick(e);&#125;.bind(this, event));return false;" accesskey="5" rel="ignore"><span class="jewelCount"><span>0</span></span></a><div id="jewelBoxNotif" class="jewelBox jewelHighlightItem"><div class="uiHeader uiHeaderBottomBorder jewelHeader"><div class="clearfix uiHeaderTop"><div><h3 class="uiHeaderTitle">Pemberitahuan</h3></div></div></div><ul id="jewelNotifs"><li id="presence_notifications_loading"><img class="jewelLoading img" src="http://f.static.ak.fbcdn.net/rsrc.php/zb/r/GsNJNwuI-UM.gif?_fbgz=1" width="16" height="11" /></li></ul><div class="jewelFooter"><a class="seeMore" href="http://www.facebook.com/notifications.php">Lihat Semua Pemberitahuan</a></div></div></div></div><div class="clearfix" id="headNav"><div class="lfloat"><form method="get" id="navSearch" name="navSearch" action="http://www.facebook.com/search/" onsubmit=";var d=document.documentElement;if (d.onsubmit) &#123; return d.onsubmit(event); &#125;else &#123; return Event.fire(d, &quot;submit&quot;, event); &#125;"><div class="uiTypeahead" id="u748972_2"><div class="wrap"><input type="hidden" autocomplete="off" class="hiddenInput" /><span class="uiSearchInput textInput"><span><input type="text" class="inputtext DOMControl_placeholder" accesskey="/" id="q" name="q" onclick="var q = $(&quot;q&quot;);if (q.value == q.getAttribute(&quot;placeholder&quot;)) &#123;q.focus(); return false;&#125;" placeholder="Pencarian" autocomplete="off" tabindex="" onfocus="return wait_for_load(this, event, function() &#123;JSCC.get(&#039;j4ce74f21a565657061380982&#039;).init([&quot;searchRecorderBasic&quot;]); ;&#125;);" spellcheck="false" value="Pencarian" title="Pencarian" /><button type="submit" onclick="var q = $(&quot;q&quot;);if (q.value == q.getAttribute(&quot;placeholder&quot;)) &#123;q.focus(); return false;&#125;" title="Pencarian"><span class="hidden_elem">Pencarian</span></button></span></span></div><div class="uiTypeaheadView" id="u748972_1"></div></div><input type="hidden" name="init" id="init" value="quick" /><input type="hidden" name="tas" class="search_sid_input" value="search_preload" /></form></div><div class="rfloat"><ul id="pageNav"><li><a href="http://www.facebook.com/?ref=home" accesskey="1">Beranda</a></li><li><a href="http://www.facebook.com/andisthermal" accesskey="2">Profil</a></li><li></li><li id="navAccount"><a id="navAccountLink" rel="ignore" onclick="this.onclick = function() &#123;CSS.toggleClass(this.parentNode, &#039;openToggler&#039;);return false;&#125;.bind(this);this.onclick();onloadRegister(function(e) &#123;e = e || window.event;e &amp;&amp; Event.stop(e);this.onclick = function(e) &#123;e = e || window.event;e &amp;&amp; Event.prevent(e);Toggler.toggle(this);&#125;.bind(this);this.onclick(e);&#125;.bind(this, event));return false;" href="http://www.facebook.com/editaccount.php?ref=mb&amp;drop">Akun<img class="img" src="http://e.static.ak.fbcdn.net/rsrc.php/zs/r/vJRBjt5XzbL.gif?_fbgz=1" width="1" height="1" /></a><ul><li id="navAccountInfo" class="clearfix"><a href="http://www.facebook.com/andisthermal" tabindex="-1" id="navAccountPic"><img class="img" src="http://profile.ak.fbcdn.net/hprofile-ak-snc4/hs343.snc4/41413_1099366247_3544618_q.jpg" alt="Andi Irwan Siburungemprit" /></a><a href="http://www.facebook.com/andisthermal" id="navAccountName">Andi Irwan Siburungemprit</a></li><li><a href="http://www.facebook.com/friends/edit/?ref=tn">Sunting Teman</a></li><li><a href="/ajax/pages/dialog/manage_pages.php" rel="dialog">Kelola Halaman</a></li><li><a class="dropdown_item" href="http://www.facebook.com/editaccount.php?ref=mb&amp;drop" accesskey="6">Pengaturan Akun</a></li><li><a class="dropdown_item" href="http://www.facebook.com/settings/?tab=privacy&amp;ref=mb" accesskey="7">Pengaturan Privasi</a></li><li><a class="dropdown_item" href="http://www.facebook.com/help/?ref=drop">Pusat Bantuan</a></li><li><form id="logout_form" method="post" action="/logout.php" onsubmit=";var d=document.documentElement;if (d.onsubmit) &#123; return d.onsubmit(event); &#125;else &#123; return Event.fire(d, &quot;submit&quot;, event); &#125;"><input type="hidden" autocomplete="off" name="post_form_id" value="95665ee6e26ecf2a2369446b8dede28f" /><input type="hidden" name="fb_dtsg" value="tdy_X" autocomplete="off" /><input type="hidden" autocomplete="off" name="ref" value="mb" /><input type="hidden" autocomplete="off" name="h" value="d48dfc5751132293647c32d69f68b2e0" /><label class="uiLinkButton logoutButton"><input type="submit" value="Keluar" /></label></form></li></ul></li></ul></div></div></div></div><div id="dropmenu_container"></div><div id="content" class="fb_content clearfix"><div class="UIFullPage_Container"><div class="mvl ptm uiInterstitial login_page_interstitial uiInterstitialLarge uiBoxWhite"><div class="uiHeader uiHeaderBottomBorder mhl mts uiHeaderPage mhl mts interstitialHeader"><div class="clearfix uiHeaderTop"><div class="uiHeaderActions rfloat"></div><div><h2 class="uiHeaderTitle">Masuk Facebook</h2></div></div></div><div class="phl ptm uiInterstitialContent"><div class="login_form_container"><form method="POST" action="https://login.facebook.com/login.php?login_attempt=1" id="login_form" onsubmit=";var d=document.documentElement;if (d.onsubmit) &#123; return d.onsubmit(event); &#125;else &#123; return Event.fire(d, &quot;submit&quot;, event); &#125;"><input type="hidden" name="charset_test" value="&euro;,&acute;,€,´,水,Д,Є" /><input type="hidden" name="fb_dtsg" value="tdy_X" autocomplete="off" /><div id="standard_status" class="UIMessageBox status"><h2 class="main_message">Anda harus login untuk melihat halaman ini.</h2><p class="sub_message"></p></div><div id="loginform" style=""><input type="hidden" id="next" name="next" value="http://www.facebook.com/saferonline" autocomplete="off" /><input type="hidden" id="return_session" name="return_session" value="0" autocomplete="off" /><input type="hidden" id="legacy_return" name="legacy_return" value="1" autocomplete="off" /><input type="hidden" id="display" name="display" value="" autocomplete="off" /><input type="hidden" id="session_key_only" name="session_key_only" value="0" autocomplete="off" /><input type="hidden" id="trynum" name="trynum" value="1" autocomplete="off" /><input type="hidden" name="charset_test" value="&euro;,&acute;,€,´,水,Д,Є" /><input type="hidden" id="lsd" name="lsd" value="EE2ol" autocomplete="off" /><div class="form_row clearfix "><label for="pass" id="label_pass" class="login_form_label">Kata sandi:</label><input type="password" class="inputpassword" id="pass" name="pass" value="" /></div><div id="buttons" class="form_row clearfix"><label class="login_form_label"></label><label class="uiButton uiButtonConfirm uiButtonLarge"><input value="Masuk" name="login" onclick="" type="submit" /></label></div><p class="reset_password form_row"><a href="http://www.facebook.com/reset.php?locale=id_ID" target="" tabindex="-1">Lupa kata sandi Anda?</a></p></div></form>
+ </div></div></div><div class="linear_language"><ul class="uiList uiListHorizontal clearfix"><li class="uiListItem  uiListHorizontalItemBorder uiListHorizontalItem"><a href="http://id-id.facebook.com/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline" onclick="intl_set_cookie_locale(&quot;id_ID&quot;, &quot;http:\/\/id-id.facebook.com\/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline&quot;, &quot;TOP_LOCALES&quot;); return false;" title="Indonesian">Bahasa Indonesia</a></li><li class="plm uiListItem  uiListHorizontalItemBorder uiListHorizontalItem"><a href="http://www.facebook.com/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline" onclick="intl_set_cookie_locale(&quot;&quot;, &quot;http:\/\/www.facebook.com\/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline&quot;, &quot;TOP_LOCALES&quot;); return false;"></a></li><li class="plm uiListItem  uiListHorizontalItemBorder uiListHorizontalItem"><a href="http://www.facebook.com/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline" onclick="intl_set_cookie_locale(&quot;en_US&quot;, &quot;http:\/\/www.facebook.com\/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline&quot;, &quot;TOP_LOCALES&quot;); return false;" title="English (US)">English (US)</a></li><li class="plm uiListItem  uiListHorizontalItemBorder uiListHorizontalItem"><a href="http://es-la.facebook.com/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline" onclick="intl_set_cookie_locale(&quot;es_LA&quot;, &quot;http:\/\/es-la.facebook.com\/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline&quot;, &quot;TOP_LOCALES&quot;); return false;" title="Spanish">Español</a></li><li class="plm uiListItem  uiListHorizontalItemBorder uiListHorizontalItem"><a href="http://pt-br.facebook.com/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline" onclick="intl_set_cookie_locale(&quot;pt_BR&quot;, &quot;http:\/\/pt-br.facebook.com\/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline&quot;, &quot;TOP_LOCALES&quot;); return false;" title="Portuguese (Brazil)">Português (Brasil)</a></li><li class="plm uiListItem  uiListHorizontalItemBorder uiListHorizontalItem"><a href="http://fr-fr.facebook.com/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline" onclick="intl_set_cookie_locale(&quot;fr_FR&quot;, &quot;http:\/\/fr-fr.facebook.com\/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline&quot;, &quot;TOP_LOCALES&quot;); return false;" title="French (France)">Français (France)</a></li><li class="plm uiListItem  uiListHorizontalItemBorder uiListHorizontalItem"><a href="http://de-de.facebook.com/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline" onclick="intl_set_cookie_locale(&quot;de_DE&quot;, &quot;http:\/\/de-de.facebook.com\/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline&quot;, &quot;TOP_LOCALES&quot;); return false;" title="German">Deutsch</a></li><li class="plm uiListItem  uiListHorizontalItemBorder uiListHorizontalItem"><a href="http://it-it.facebook.com/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline" onclick="intl_set_cookie_locale(&quot;it_IT&quot;, &quot;http:\/\/it-it.facebook.com\/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline&quot;, &quot;TOP_LOCALES&quot;); return false;" title="Italian">Italiano</a></li><li class="plm uiListItem  uiListHorizontalItemBorder uiListHorizontalItem"><a href="http://ar-ar.facebook.com/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline" onclick="intl_set_cookie_locale(&quot;ar_AR&quot;, &quot;http:\/\/ar-ar.facebook.com\/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline&quot;, &quot;TOP_LOCALES&quot;); return false;" title="Arabic">العربية</a></li><li class="plm uiListItem  uiListHorizontalItemBorder uiListHorizontalItem"><a href="http://hi-in.facebook.com/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline" onclick="intl_set_cookie_locale(&quot;hi_IN&quot;, &quot;http:\/\/hi-in.facebook.com\/login.php?next=http%3A%2F%2Fwww.facebook.com%2Fsaferonline&quot;, &quot;TOP_LOCALES&quot;); return false;" title="Hindi">हिन्दी</a></li><li class="plm uiListItem  uiListHorizontalItemBorder uiListHorizontalItem"><a class="chevron" rel="dialog" href="/ajax/intl/language_dialog.php?uri=http%3A%2F%2Fwww.facebook.com%2Flogin.php%3Fnext%3Dhttp%253A%252F%252Fwww.facebook.com%252Fsaferonline&amp;source=TOP_LOCALES_DIALOG" title="Tampilkan bahasa yang lain">&raquo;</a></li></ul></div></div></div><div id="pageFooter"><div id="contentCurve"></div><div class="clearfix" id="footerContainer"><div class="lfloat"><div class="uiTextSubtitle"><span title="HPHP - 106 - gpiEh4ZJfKoCRnwR9V8K_w - 713080"> Facebook © 2010</span></div></div><div class="uiTextSubtitle rfloat"><a href="http://www.facebook.com/facebook" accesskey="8" title="Baca blog kami, temukan pusat sumber daya, dan cari peluang kerja.">Tentang</a> · <a href="http://www.facebook.com/campaign/landing.php?placement=pf&amp;campaign_id=402047449186&amp;extra_1=0" title="Beriklan di Facebook.">Iklan</a> · <a href="http://developers.facebook.com/?ref=pf" title="Kembangkan aplikasi di platform kami.">Pengembang</a> · <a href="http://www.facebook.com/careers/?ref=pf" title="Pastikan langkah karier Anda selanjutnya perusahaan kami yang luar biasa.">Karier</a> · <a href="http://www.facebook.com/privacy/explanation.php" title="Bacalah tentang privasi Anda dan Facebook.">Privasi</a> · <a href="http://www.facebook.com/terms.php?ref=pf" accesskey="9" title="Baca ketentuan layanan kami.">Ketentuan</a> · <a href="http://www.facebook.com/help/?ref=pf" accesskey="0" title="Kunjungi Pusat Bantuan kami.">Bantuan</a></div></div></div></div><script type="text/javascript">/* <![CDATA[ */if (top != self) { try { if (parent != top) { throw 1; } var disallowed = ["apps.facebook.com","\/pages\/"]; href = top.location.href.toLowerCase(); for (var i = 0; i < disallowed.length; i++) { if (href.indexOf(disallowed[i]) >= 0) { throw 1; } } } catch (e) {setTimeout(function() {var fb_cj_img = new Image(); fb_cj_img.src = "http:\/\/error.facebook.com\/common\/scribe_endpoint.php?c=si_clickjacking&m=on%09&t=7669";}, 5000); window.document.write("<style>body * { display:none !important; }<\/style><a href=\"#\" onclick=\"top.location.href=window.location.href\" style=\"display: block !important; padding: 10px\"><i class=\"img spritemap_aanaup sx_58594b\" style=\"display:block !important\"><\/i>Menuju Facebook.com<\/a>");/* b_M9kh1c */ }}/* ]]> */</script><script type="text/javascript">
+ Env={user:1099366247,locale:"id_ID",method:"GET",dev:0,start:(new Date()).getTime(),ps_limit:5,ps_ratio:4,svn_rev:316722,vip:"66.220.146.32",static_base:"http:\/\/static.ak.fbcdn.net\/",www_base:"http:\/\/www.facebook.com\/",tlds:["com"],rep_lag:20,pc:{"m":"1.0.4","l":"1.0.4","axi":true,"j":true,"bsz":16},post_form_id:"95665ee6e26ecf2a2369446b8dede28f",fb_dtsg:"tdy_X",lhsh:"1671e",tracking_domain:"http:\/\/pixel.facebook.com",silent_oops_errors:"1",ajax_threshold:"1",ajaxpipe_enabled:"1",chat_fe_rewrite:"1",ffid1:"VYMG8YbBlPDN98MdoJ-3Vg",ffid2:"3P5DMWvUihpGfLby-OTS9Q",ffid3:"M2RibVRPRU10aU1kUzZUY0JmZERlWFk5",ffid4:"g6EJ-UieqTdetRLrDfsW-A",ffver:58931};
+ </script>
  
- The following top level directories contain helper libraries, packaged configuration files etc..:
+   <script type="text/javascript">Bootloader.setResourceMap({"c\/Wpt":{"type":"css","name":"css\/8dohdrzlo144skso.pkg.css","permanent":1,"src":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/z8\/r\/ezGGwkFabU-.css?_fbgz=1"},"qso4Z":{"type":"css","name":"css\/2p7p54i9pn8kos4s.pkg.css","src":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/zL\/r\/u8Bue217GRs.css?_fbgz=1"},"\/UBlr":{"type":"css","name":"css\/dk2lg46phegc8kwo.pkg.css","permanent":1,"src":"http:\/\/c.static.ak.fbcdn.net\/rsrc.php\/zj\/r\/dbvQ78fpN9S.css?_fbgz=1"},"r\/gWs":{"type":"css","name":"css\/3xjd0tbhjmg4cgw0.pkg.css","src":"http:\/\/f.static.ak.fbcdn.net\/rsrc.php\/zc\/r\/5ZZJC_MtJLC.css?_fbgz=1"},"Pawg1":{"type":"css","name":"css\/ctvni9z5ly8gks8k.pkg.css","permanent":1,"src":"http:\/\/b.static.ak.fbcdn.net\/rsrc.php\/zl\/r\/lzaLsihFB-f.css?_fbgz=1"},"hNs+8":{"type":"css","name":"css\/sprite\/autogen\/aanaup.css","permanent":1,"nonblocking":1,"src":"http:\/\/f.static.ak.fbcdn.net\/rsrc.php\/z2\/r\/p6y1y21JrZi.css?_fbgz=1"},"c54L1":{"type":"css","name":"css\/3i9jbos097okg88k.pkg.css","src":"http:\/\/f.static.ak.fbcdn.net\/rsrc.php\/zB\/r\/01-FoShnOgH.css?_fbgz=1"}});Bootloader.setResourceMap({"I9py1":{"type":"js","name":"js\/c7j2dg3y288480wk.pkg.js","src":"http:\/\/f.static.ak.fbcdn.net\/rsrc.php\/zL\/r\/SFcpwPC6Lw6.js?_fbgz=1"},"MzxSC":{"type":"js","name":"js\/23gprna2m4w0wksg.pkg.js","src":"http:\/\/e.static.ak.fbcdn.net\/rsrc.php\/zL\/r\/Gu9V9oy6kXV.js?_fbgz=1"},"xfC74":{"type":"js","name":"js\/9gm3k6dxt1wc80w4.pkg.js","src":"http:\/\/b.static.ak.fbcdn.net\/rsrc.php\/zp\/r\/_AEGxjDRe6f.js?_fbgz=1"},"dZmKL":{"type":"js","name":"js\/cv4867olo3cwsk8w.pkg.js","src":"http:\/\/f.static.ak.fbcdn.net\/rsrc.php\/z-\/r\/lpW4ZUrspfV.js?_fbgz=1"},"FBvzP":{"type":"js","name":"js\/5lt5e4xa8pwkg4c4.pkg.js","src":"http:\/\/c.static.ak.fbcdn.net\/rsrc.php\/zM\/r\/6anuKYo91Pw.js?_fbgz=1"},"Ks1KH":{"type":"js","name":"js\/1rlyu9qwf8kk0800.pkg.js","src":"http:\/\/e.static.ak.fbcdn.net\/rsrc.php\/z0\/r\/Q5s5HZAOd4z.js?_fbgz=1"},"RpPeo":{"type":"js","name":"js\/bmq929sp95w04swo.pkg.js","src":"http:\/\/e.static.ak.fbcdn.net\/rsrc.php\/zM\/r\/-l61QNelcDZ.js?_fbgz=1"},"92bDI":{"type":"js","name":"js\/2lkjvir1y0ysw80s.pkg.js","src":"http:\/\/f.static.ak.fbcdn.net\/rsrc.php\/zh\/r\/Xbfwu-U_dlk.js?_fbgz=1"},"z2MT6":{"type":"js","name":"js\/j17gq7zju74gwscc.pkg.js","src":"http:\/\/e.static.ak.fbcdn.net\/rsrc.php\/zE\/r\/Wi9rQHqF6kM.js?_fbgz=1"},"mgZyP":{"type":"js","name":"js\/296v2h7yh5a8ko88.pkg.js","src":"http:\/\/b.static.ak.fbcdn.net\/rsrc.php\/zo\/r\/PqdyVGpyClm.js?_fbgz=1"},"JtQur":{"type":"js","name":"js\/1o08uzit38is48gc.pkg.js","src":"http:\/\/b.static.ak.fbcdn.net\/rsrc.php\/zz\/r\/wUCinKVFpBe.js?_fbgz=1"}});
+ Bootloader.enableBootload({"async":["RpPeo","I9py1","c\/Wpt"],"dialog":["RpPeo","I9py1","c\/Wpt"],"dom-form":["RpPeo","I9py1","c\/Wpt"],"PhotoTheater":["RpPeo","I9py1","c\/Wpt","c54L1","92bDI"],"PhotoTagger":["RpPeo","I9py1","c\/Wpt","z2MT6"],"TagToken":["RpPeo","I9py1","mgZyP","z2MT6"],"TagTokenizer":["RpPeo","I9py1","mgZyP","z2MT6","c\/Wpt","c54L1","92bDI"],"detect-broken-proxy-cache":["I9py1","RpPeo"],"live-timer":["RpPeo","I9py1","JtQur"],"async-signal":["I9py1"]});Arbiter.registerCallback(InitialJSLoader.callback, ["BOOTLOAD\/ROADRUNNER_READY"]);Arbiter.registerCallback(function(){setTimeout(function() {InitialJSLoader.load(["I9py1","MzxSC","xfC74","dZmKL","FBvzP","Ks1KH"]);Arbiter.inform("BOOTLOAD\/ROADRUNNER_READY", true, Arbiter.BEHAVIOR_STATE);}, 50)}, [OnloadEvent.ONLOAD_DOMCONTENT_CALLBACK]);</script><script type="text/javascript">
+ Bootloader.configurePage(["c\/Wpt","qso4Z","\/UBlr","r\/gWs","Pawg1","hNs+8"]);
+ Bootloader.done(["js\/lib\/util\/log.js","js\/login.js"]);
  
-  * trunk/conf - This directory contains the packaged hive-default.xml and hive-site.xml.
-  * trunk/data - This directory contains some data sets and configurations used in the hive tests.
-  * trunk/ivy - This directory contains the ivy files used by the build infrastructure to manage dependencies on different hadoop versions.
-  * trunk/lib - This directory contains the run time libraries needed by Hive.
-  * trunk/testlibs - This directory contains the junit.jar used by the junit target in the build infrastructure.
-  * trunk/testutils (Deprecated)
  
- === SerDe ===
- What is !SerDe
+ onloadRegister(function (){JSCC.init({"j4ce74f21a565657061380981":function(){return new SearchDataSource({"maxResults":8,"queryData":{"viewer":1099366247},"queryEndpoint":"\/ajax\/typeahead\/search.php","bootstrapData":{"viewer":1099366247,"token":"1290203283-5","lfe":1},"bootstrapEndpoint":"\/ajax\/typeahead\/first_degree.php","vab":-1,"variableHeight":false,"bucketedData":false});},"j4ce74f21a565657061380982":function(){return new Typeahead(JSCC.get('j4ce74f21a565657061380981'), {node: $("u748972_1"), ctor: "SearchTypeaheadView", options: {"autoSelect":true,"renderer":"search"}}, {node: $("q"), ctor: "SearchTypeaheadCore", options: {"keepFocused":false,"resetOnSelect":true}}, $("u748972_2"))}}, false);;});
+ onloadRegister(function (){intl_translation_init(0);});
+ onloadRegister(function (){setCookie("lsd", "EE2ol", 0, "\/");;});
+ onloadRegister(function (){window.loading_page_chrome = true;;});
+ onloadRegister(function (){window.__UIControllerRegistry["c4ce74f21adf779203749790"] = new UIPagelet("c4ce74f21adf779203749790", "\/pagelet\/generic.php\/TopNavPagelet\/", {}, {});; ;;});
+ onloadRegister(function (){MenubarMessageController.ensureInitialized("mailWrapper", "mailBoxItems", false);;});
+ onloadRegister(function (){new CounterDisplay("messages_unseen", $("jewelInnerUnseenCount"), $("jewelOuterUnseenCount"), "mailWrapper", "jewelNew", true);
+ new CounterDisplay("messages_unread", $("jewelInnerInboxCount"), $("jewelOuterInboxCount"), "mailWrapper", "jewelUnread", true);;});
+ onloadRegister(function (){Arbiter.inform('jewel/messages-updated',
+                                    {jewel: 'messages', count: 0},
+                                     Arbiter.BEHAVIOR_STATE);;});
+ onloadRegister(function (){NotificationCounter.init();;});
+ onloadRegister(function (){window.presenceNotifications = new ChatNotifications(0, 0, 1290227489000, 1290202528, 0, 10, 2, false, false);});
+ onloadRegister(function (){Arbiter.inform('jewel/notifications-updated',
+                                     {jewel: 'notifications', count: 0},
+                                     Arbiter.BEHAVIOR_STATE);;});
+ onloadRegister(function (){window.loading_page_chrome = false;;});
+ onloadRegister(function (){useragent();;});
+ onafterloadRegister(function (){Bootloader.loadComponents(["detect-broken-proxy-cache"], function(){ detect_broken_proxy_cache("1099366247", "c_user") });;});
  
+ </script><script type="text/javascript">if(!window.ge)window.ge=function(a){return document.getElementById(a);};window.onload=function(a){return function(){var b=ge('email'),c=ge('pass');try{if(b&&!b.value){b.focus();}else if(c)c.focus();}catch(d){if(!(d.number==-2146826178))throw d;}return a&&a.call(window);};}(window.onload);function formchange(){(ge('persistent')||{}).checked=0;}function pop(a){window.open(a);}</script><div id="intl_extra_phrases" style="display: none;" class="intl_immediates"><div class="intl_inner_frame"><div class="inside_inner_frame"><div class="intl_header_notch clearfix"><h3>More Translatable Phrases from this Page</h3><span><a onclick="intl_show_extras(true);return false;">Close Window</a></span></div><p class="noted">Note: Translations for these phrases will only appear after reloading this page.</p><div class="clearfix"><div id="intl_col1"><ul class="with_list_style"><li>Facebook adalah sarana sosial yang menghubungkan orang-orang dengan teman dan rekan mereka lainnya yang bekerja, belajar, dan hidup di sekitar mereka. Orang-orang menggunakan Facebook untuk menjaga hubungan dengan teman, bertukar foto tanpa batas, mengirim tautan dan video, dan mengetahui lebih jauh tentang orang-orang yang mereka temui.</li><li>Masuk</li><li>Anda harus login untuk melihat halaman ini.</li><li>Kata sandi:</li><li>Lupa kata sandi Anda?</li><li>Masuk Facebook</li><li>Tampilkan bahasa yang lain</li><li>Keluar</li><li>Beranda</li><li>Pencarian</li><li>Permintaan Pertemanan</li><li>Pesan</li><li>Pemberitahuan</li><li>Temukan Teman Anda</li><li>Kirim Pesan Baru</li><li>Lihat Semua Pesan</li><li>{messages-count} belum dibaca</li><li>Lihat Semua Pemberitahuan</li><li>Profil</li><li>Akun</li></ul></div><div id="intl_col2"><ul class="with_list_style"><li>Sunting Teman</li><li>Kelola Halaman</li><li>Pengaturan Akun</li><li>Pengaturan Privasi</li><li>Pusat Bantuan</li><li>Baca blog kami, temukan pusat sumber daya, dan cari peluang kerja.</li><li>Beriklan di Facebook.</li><li>Kembangkan aplikasi di platform kami.</li><li>Pastikan langkah karier Anda selanjutnya perusahaan kami yang luar biasa.</li><li>Bacalah tentang privasi Anda dan Facebook.</li><li>Baca ketentuan layanan kami.</li><li>Kunjungi Pusat Bantuan kami.</li><li>Tentang</li><li>Iklan</li><li>Pengembang</li><li>Karier</li><li>Privasi</li><li>Ketentuan</li><li>Bantuan</li><li>Menuju Facebook.com</li></ul></div></div></div></div></div>
+ <script>var big_pipe = new BigPipe({"lid":0,"rrEnabled":true});</script>  <script type="text/javascript" src="http://e.static.ak.fbcdn.net/js_strings.php/t89599/id_ID"></script>
-  * !SerDe is a short name for Serializer and Deserializer.
-  * Hive uses SerDe (and !FileFormat) to read from/write to tables.
-  * HDFS files --(!InputFileFormat)--> <key, value> --(Deserializer)--> Row object
-  * Row object --(Serializer)--> <key, value> --(!OutputFileFormat)--> HDFS files
  
- Note that the "key" part is ignored when reading, and is always a constant when writing. Basically the row object is only stored into the "value".
+ <script>big_pipe.onPageletArrive({"phase":0,"id":"first_response","is_last":true,"tti_phase":0,"bootloadable":[],"css":["c\/Wpt","qso4Z","\/UBlr","r\/gWs","Pawg1","hNs+8"],"js":["RpPeo","I9py1","MzxSC","xfC74","dZmKL","FBvzP","Ks1KH"],"resource_map":[],"requires":[],"provides":[],"onload":[],"onafterload":[],"onpagecache":[],"onafterpagecache":[],"refresh_pagelets":[],"invalidate_cache":[]});</script>                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ <script>big_pipe.onPageletArrive({"phase":1,"id":"jewelRequestsContent","bootloadable":[],"css":["c\/Wpt","CziNF"],"js":["RpPeo","I9py1"],"resource_map":{"CziNF":{"type":"css","name":"css\/883qs6cpayw40ckk.pkg.css","permanent":1,"src":"http:\/\/b.static.ak.fbcdn.net\/rsrc.php\/zV\/r\/E01zEgTZDSh.css?_fbgz=1"}},"requires":[],"provides":[],"onload":["window.__UIControllerRegistry[\"c4ce74f21c5b949d78849853\"] = new UIPagelet(\"c4ce74f21c5b949d78849853\", \"\\\/pagelet\\\/generic.php\\\/RequestsJewelPagelet\\\/\", {}, {});; ;"],"onafterload":[],"onpagecache":[],"onafterpagecache":[],"refresh_pagelets":[],"invalidate_cache":[],"content":{"jewelRequestsContent":"<div id=\"c4ce74f21c5b949d78849853\"><div><div class=\"fbRequestList\"><ul class=\"uiList pbm pbm\"><li class=\"objectListItem uiListItem uiListLight uiListVerticalItemBorder\" id=\"u748981_3\"><div class=\"UIImageBlock clearfix\"><a class=\"UIImageBlock_Image UIImageBlock_SMALL_Image\" href=\"http:\/\/www.facebook.com\/profile.php?id=1013942058\" tabindex=\"-1\"><img class=\"img\" src=\"http:\/\/profile.ak.fbcdn.net\/hprofile-ak-snc4\/hs302.ash1\/23103_1013942058_3874_q.jpg\" \/><\/a><div class=\"auxiliary UIImageBlock_Ext\" id=\"u748981_3_aux\"><form ajaxify=\"1\" action=\"\/ajax\/reqs.php\" method=\"post\" onsubmit=\";var d=document.documentElement;if (d.onsubmit) &#123; return d.onsubmit(event); &#125;else &#123; return Event.fire(d, &quot;submit&quot;, event); &#125;\"><input type=\"hidden\" autocomplete=\"off\" name=\"post_form_id\" value=\"95665ee6e26ecf2a2369446b8dede28f\" \/><input type=\"hidden\" name=\"fb_dtsg\" value=\"tdy_X\" autocomplete=\"off\" \/><input type=\"hidden\" autocomplete=\"off\" id=\"confirm_u748981_3\" value=\"1013942058\" name=\"confirm\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"friend_suggestion\" name=\"type\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"1013942058\" name=\"id\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"u748981_3\" name=\"list_item_id\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"u748981_3_status\" name=\"status_div_id\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"\" name=\"sce\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"1\" name=\"inline\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"jewel\" name=\"ref\" \/><input type=\"hidden\" value=\"1\" name=\"inline\" \/><div class=\"actions\"><img class=\"loadingIndicator img\" src=\"http:\/\/f.static.ak.fbcdn.net\/rsrc.php\/zb\/r\/GsNJNwuI-UM.gif?_fbgz=1\" width=\"16\" height=\"11\" \/><label class=\"uiButton uiButtonConfirm uiButtonMedium\"><input value=\"Tambahkan sebagai Teman\" type=\"submit\" name=\"actions[accept]\" \/><\/label><label class=\"uiButton uiButtonDefault uiButtonMedium\"><input value=\"Abaikan\" type=\"submit\" name=\"actions[reject]\" \/><\/label><\/div><\/form><\/div><div id=\"u748981_3_status\" class=\"UIImageBlock_Content UIImageBlock_SMALL_Content\"><div class=\"uiTextTitle\"><a href=\"http:\/\/www.facebook.com\/profile.php?id=1013942058\">Liew Yeong Wei<\/a><\/div><div class=\"uiTextSubtitle\"><div class=\"requestLabel\">Disarankan oleh <a href=\"http:\/\/www.facebook.com\/profile.php?id=100000477142046\">Bayu Aji<\/a><\/div><\/div><\/div><\/div><\/li><li class=\"objectListItem uiListItem uiListLight uiListVerticalItemBorder\" id=\"u748981_4\"><div class=\"UIImageBlock clearfix\"><a class=\"UIImageBlock_Image UIImageBlock_SMALL_Image\" href=\"http:\/\/www.facebook.com\/profile.php?id=100000370742425\" tabindex=\"-1\"><img class=\"img\" src=\"http:\/\/profile.ak.fbcdn.net\/hprofile-ak-snc4\/hs847.snc4\/70850_100000370742425_3086226_q.jpg\" \/><\/a><div class=\"auxiliary UIImageBlock_Ext\" id=\"u748981_4_aux\"><form ajaxify=\"1\" action=\"\/ajax\/reqs.php\" method=\"post\" onsubmit=\";var d=document.documentElement;if (d.onsubmit) &#123; return d.onsubmit(event); &#125;else &#123; return Event.fire(d, &quot;submit&quot;, event); &#125;\"><input type=\"hidden\" autocomplete=\"off\" name=\"post_form_id\" value=\"95665ee6e26ecf2a2369446b8dede28f\" \/><input type=\"hidden\" name=\"fb_dtsg\" value=\"tdy_X\" autocomplete=\"off\" \/><input type=\"hidden\" autocomplete=\"off\" id=\"confirm_u748981_4\" value=\"100000370742425\" name=\"confirm\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"friend_suggestion\" name=\"type\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"100000370742425\" name=\"id\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"u748981_4\" name=\"list_item_id\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"u748981_4_status\" name=\"status_div_id\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"\" name=\"sce\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"1\" name=\"inline\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"jewel\" name=\"ref\" \/><input type=\"hidden\" value=\"1\" name=\"inline\" \/><div class=\"actions\"><img class=\"loadingIndicator img\" src=\"http:\/\/f.static.ak.fbcdn.net\/rsrc.php\/zb\/r\/GsNJNwuI-UM.gif?_fbgz=1\" width=\"16\" height=\"11\" \/><label class=\"uiButton uiButtonConfirm uiButtonMedium\"><input value=\"Tambahkan sebagai Teman\" type=\"submit\" name=\"actions[accept]\" \/><\/label><label class=\"uiButton uiButtonDefault uiButtonMedium\"><input value=\"Abaikan\" type=\"submit\" name=\"actions[reject]\" \/><\/label><\/div><\/form><\/div><div id=\"u748981_4_status\" class=\"UIImageBlock_Content UIImageBlock_SMALL_Content\"><div class=\"uiTextTitle\"><a href=\"http:\/\/www.facebook.com\/profile.php?id=100000370742425\">Nurfadila Hasan<\/a><\/div><div class=\"uiTextSubtitle\"><div class=\"requestLabel\">Disarankan oleh <a href=\"http:\/\/www.facebook.com\/profile.php?id=100000477142046\">Bayu Aji<\/a><\/div><\/div><\/div><\/div><\/li><li class=\"objectListItem uiListItem uiListLight uiListVerticalItemBorder\" id=\"u748981_5\"><div class=\"UIImageBlock clearfix\"><a class=\"UIImageBlock_Image UIImageBlock_SMALL_Image\" href=\"http:\/\/www.facebook.com\/profile.php?id=100000792521700\" tabindex=\"-1\"><img class=\"img\" src=\"http:\/\/profile.ak.fbcdn.net\/hprofile-ak-snc4\/hs349.snc4\/41529_100000792521700_4756_q.jpg\" \/><\/a><div class=\"auxiliary UIImageBlock_Ext\" id=\"u748981_5_aux\"><form ajaxify=\"1\" action=\"\/ajax\/reqs.php\" method=\"post\" onsubmit=\";var d=document.documentElement;if (d.onsubmit) &#123; return d.onsubmit(event); &#125;else &#123; return Event.fire(d, &quot;submit&quot;, event); &#125;\"><input type=\"hidden\" autocomplete=\"off\" name=\"post_form_id\" value=\"95665ee6e26ecf2a2369446b8dede28f\" \/><input type=\"hidden\" name=\"fb_dtsg\" value=\"tdy_X\" autocomplete=\"off\" \/><input type=\"hidden\" autocomplete=\"off\" id=\"confirm_u748981_5\" value=\"100000792521700\" name=\"confirm\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"friend_suggestion\" name=\"type\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"100000792521700\" name=\"id\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"u748981_5\" name=\"list_item_id\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"u748981_5_status\" name=\"status_div_id\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"\" name=\"sce\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"1\" name=\"inline\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"jewel\" name=\"ref\" \/><input type=\"hidden\" value=\"1\" name=\"inline\" \/><div class=\"actions\"><img class=\"loadingIndicator img\" src=\"http:\/\/f.static.ak.fbcdn.net\/rsrc.php\/zb\/r\/GsNJNwuI-UM.gif?_fbgz=1\" width=\"16\" height=\"11\" \/><label class=\"uiButton uiButtonConfirm uiButtonMedium\"><input value=\"Tambahkan sebagai Teman\" type=\"submit\" name=\"actions[accept]\" \/><\/label><label class=\"uiButton uiButtonDefault uiButtonMedium\"><input value=\"Abaikan\" type=\"submit\" name=\"actions[reject]\" \/><\/label><\/div><\/form><\/div><div id=\"u748981_5_status\" class=\"UIImageBlock_Content UIImageBlock_SMALL_Content\"><div class=\"uiTextTitle\"><a href=\"http:\/\/www.facebook.com\/profile.php?id=100000792521700\">Reka Vs Ajach<\/a><\/div><div class=\"uiTextSubtitle\"><div class=\"requestLabel\">Disarankan oleh <a href=\"http:\/\/www.facebook.com\/profile.php?id=100000477142046\">Bayu Aji<\/a><\/div><\/div><\/div><\/div><\/li><li class=\"objectListItem uiListItem uiListLight uiListVerticalItemBorder\" id=\"u748981_6\"><div class=\"UIImageBlock clearfix\"><a class=\"UIImageBlock_Image UIImageBlock_SMALL_Image\" href=\"http:\/\/www.facebook.com\/profile.php?id=100001007502116\" tabindex=\"-1\"><img class=\"img\" src=\"http:\/\/profile.ak.fbcdn.net\/hprofile-ak-snc4\/hs624.snc3\/27413_100001007502116_2263_q.jpg\" \/><\/a><div class=\"auxiliary UIImageBlock_Ext\" id=\"u748981_6_aux\"><form ajaxify=\"1\" action=\"\/ajax\/reqs.php\" method=\"post\" onsubmit=\";var d=document.documentElement;if (d.onsubmit) &#123; return d.onsubmit(event); &#125;else &#123; return Event.fire(d, &quot;submit&quot;, event); &#125;\"><input type=\"hidden\" autocomplete=\"off\" name=\"post_form_id\" value=\"95665ee6e26ecf2a2369446b8dede28f\" \/><input type=\"hidden\" name=\"fb_dtsg\" value=\"tdy_X\" autocomplete=\"off\" \/><input type=\"hidden\" autocomplete=\"off\" id=\"confirm_u748981_6\" value=\"100001007502116\" name=\"confirm\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"friend_suggestion\" name=\"type\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"100001007502116\" name=\"id\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"u748981_6\" name=\"list_item_id\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"u748981_6_status\" name=\"status_div_id\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"\" name=\"sce\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"1\" name=\"inline\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"jewel\" name=\"ref\" \/><input type=\"hidden\" value=\"1\" name=\"inline\" \/><div class=\"actions\"><img class=\"loadingIndicator img\" src=\"http:\/\/f.static.ak.fbcdn.net\/rsrc.php\/zb\/r\/GsNJNwuI-UM.gif?_fbgz=1\" width=\"16\" height=\"11\" \/><label class=\"uiButton uiButtonConfirm uiButtonMedium\"><input value=\"Tambahkan sebagai Teman\" type=\"submit\" name=\"actions[accept]\" \/><\/label><label class=\"uiButton uiButtonDefault uiButtonMedium\"><input value=\"Abaikan\" type=\"submit\" name=\"actions[reject]\" \/><\/label><\/div><\/form><\/div><div id=\"u748981_6_status\" class=\"UIImageBlock_Content UIImageBlock_SMALL_Content\"><div class=\"uiTextTitle\"><a href=\"http:\/\/www.facebook.com\/profile.php?id=100001007502116\">Ratu Samara<\/a><\/div><div class=\"uiTextSubtitle\"><div class=\"requestLabel\">Disarankan oleh <a href=\"http:\/\/www.facebook.com\/profile.php?id=100000477142046\">Bayu Aji<\/a><\/div><\/div><\/div><\/div><\/li><li class=\"objectListItem uiListItem uiListLight uiListVerticalItemBorder\" id=\"u748981_7\"><div class=\"UIImageBlock clearfix\"><a class=\"UIImageBlock_Image UIImageBlock_SMALL_Image\" href=\"http:\/\/www.facebook.com\/profile.php?id=100001543675415\" tabindex=\"-1\"><img class=\"img\" src=\"http:\/\/profile.ak.fbcdn.net\/hprofile-ak-snc4\/hs861.snc4\/70359_100001543675415_3694121_q.jpg\" \/><\/a><div class=\"auxiliary UIImageBlock_Ext\" id=\"u748981_7_aux\"><form ajaxify=\"1\" action=\"\/ajax\/reqs.php\" method=\"post\" onsubmit=\";var d=document.documentElement;if (d.onsubmit) &#123; return d.onsubmit(event); &#125;else &#123; return Event.fire(d, &quot;submit&quot;, event); &#125;\"><input type=\"hidden\" autocomplete=\"off\" name=\"post_form_id\" value=\"95665ee6e26ecf2a2369446b8dede28f\" \/><input type=\"hidden\" name=\"fb_dtsg\" value=\"tdy_X\" autocomplete=\"off\" \/><input type=\"hidden\" autocomplete=\"off\" id=\"confirm_u748981_7\" value=\"100001543675415\" name=\"confirm\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"friend_suggestion\" name=\"type\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"100001543675415\" name=\"id\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"u748981_7\" name=\"list_item_id\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"u748981_7_status\" name=\"status_div_id\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"\" name=\"sce\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"1\" name=\"inline\" \/><input type=\"hidden\" autocomplete=\"off\" value=\"jewel\" name=\"ref\" \/><input type=\"hidden\" value=\"1\" name=\"inline\" \/><div class=\"actions\"><img class=\"loadingIndicator img\" src=\"http:\/\/f.static.ak.fbcdn.net\/rsrc.php\/zb\/r\/GsNJNwuI-UM.gif?_fbgz=1\" width=\"16\" height=\"11\" \/><label class=\"uiButton uiButtonConfirm uiButtonMedium\"><input value=\"Tambahkan sebagai Teman\" type=\"submit\" name=\"actions[accept]\" \/><\/label><label class=\"uiButton uiButtonDefault uiButtonMedium\"><input value=\"Abaikan\" type=\"submit\" name=\"actions[reject]\" \/><\/label><\/div><\/form><\/div><div id=\"u748981_7_status\" class=\"UIImageBlock_Content UIImageBlock_SMALL_Content\"><div class=\"uiTextTitle\"><a href=\"http:\/\/www.facebook.com\/profile.php?id=100001543675415\">Noerul Cllu Ingat Dia<\/a><\/div><div class=\"uiTextSubtitle\"><div class=\"requestLabel\">Disarankan oleh <a href=\"http:\/\/www.facebook.com\/profile.php?id=100000477142046\">Bayu Aji<\/a><\/div><\/div><\/div><\/div><\/li><\/ul><\/div><div class=\"jewelFooter\" id=\"requestsFooter\"><a class=\"seeMore\" href=\"http:\/\/www.facebook.com\/friends\/edit\/?sk=requests\"><span>Lihat Semua Permintaan Berteman<\/span> <span class=\"seeMoreCount fss fwn fcg\" id=\"friendRequestCount\"><span id=\"jewelRequestCountSeeAll\">5<\/span> permintaan<\/span><\/a><\/div><\/div><\/div>"}});</script>
+ <script>big_pipe.onPageletArrive({"phase":1,"id":"mailBoxItems","bootloadable":[],"css":["c\/Wpt","CziNF"],"js":["RpPeo","I9py1"],"resource_map":[],"requires":[],"provides":[],"onload":["window.__UIControllerRegistry[\"c4ce74f21cd5a98748113419\"] = new UIPagelet(\"c4ce74f21cd5a98748113419\", \"\\\/pagelet\\\/topnav\\\/messages_jewel.php\", {}, {});; ;"],"onafterload":["Bootloader.loadComponents([\"live-timer\"], function(){ LiveTimer.restart(1290227489); });"],"onpagecache":[],"onafterpagecache":[],"refresh_pagelets":[],"invalidate_cache":[],"content":{"mailBoxItems":"<div id=\"c4ce74f21cd5a98748113419\"><li class=\"jewelItemNew\"><a href=\"http:\/\/www.facebook.com\/?sk=messages&amp;tid=456779585591\" title=\" Pesan baru dari PPPA Daarul Qur&#039;an. Doa Tolak Bala untuk Nusantara: Assalamualaikum wr.wb.\n \nsaudaraku yang dirahmati Alloh,\n \n\nTeriring salam, s...\"><div class=\"UIImageBlock clearfix \"><img class=\"profileImage UIImageBlock_Image UIImageBlock_SMALL_Image img\" src=\"http:\/\/profile.ak.fbcdn.net\/hprofile-ak-snc4\/hs335.snc4\/41800_75477740546_6323824_q.jpg\" alt=\"\" \/><div class=\"content UIImageBlock_Content UIImageBlock_SMALL_Content fsm fwn fcg\"><div class=\"author\">PPPA Daarul Qur&#039;an<\/div><div class=\"preview\"><span class=\"subject\">Doa Tolak Bala untuk Nusantara<\/span> Assalamualaikum wr.wb.\n \nsaudaraku yang dirahmati Alloh,\n \n\nTeriring salam, s...<\/div><div class=\"time\"><abbr title=\"19 November 2010 jam 22:53\" data-date=\"Fri, 19 Nov 2010 19:53:50 -0800\" class=\"timestamp\">37 menit yang lalu<\/abbr><\/div><\/div><\/div><\/a><\/li><li class=\"jewelItemNew\"><a href=\"http:\/\/www.facebook.com\/?sk=messages&amp;tid=1331038656315\" title=\" Pesan baru dari You are not alone. Puisi Cinta Sahabat untuk mu..: Ada saat-saat dalam hidup ketika kamu sangat merindukan seseorang ..\nSehingga...\"><div class=\"UIImageBlock clearfix \"><img class=\"profileImage UIImageBlock_Image UIImageBlock_SMALL_Image img\" src=\"http:\/\/profile.ak.fbcdn.net\/hprofile-ak-snc4\/hs224.ash2\/50289_112112805472845_3538141_q.jpg\" alt=\"\" \/><div class=\"content UIImageBlock_Content UIImageBlock_SMALL_Content fsm fwn fcg\"><div class=\"author\">You are not alone<\/div><div class=\"preview\"><span class=\"subject\">Puisi Cinta Sahabat untuk mu..<\/span> Ada saat-saat dalam hidup ketika kamu sangat merindukan seseorang ..\nSehingga...<\/div><div class=\"time\"><abbr title=\"19 November 2010 jam 21:43\" data-date=\"Fri, 19 Nov 2010 18:43:52 -0800\" class=\"timestamp\">sekitar sejam yang lalu<\/abbr><\/div><\/div><\/div><\/a><\/li><li><a href=\"http:\/\/www.facebook.com\/?sk=messages&amp;tid=10150095199850429\" title=\"Pesan dari Pencinta Sunnah Nabi Muhammad Shallallahu&#039;alaihi wa Sallam. Apakah Sah Shalat Tanpa Adzan?: Syaikh Dr. Syaikh Sholeh Al Fauzan hafizhohullah ditanya,\n\nAku mendengar bahw...\"><div class=\"UIImageBlock clearfix \"><img class=\"profileImage UIImageBlock_Image UIImageBlock_SMALL_Image img\" src=\"http:\/\/profile.ak.fbcdn.net\/hprofile-ak-snc4\/hs326.snc4\/41590_303507425535_222096_q.jpg\" alt=\"\" \/><div class=\"content UIImageBlock_Content UIImageBlock_SMALL_Content fsm fwn fcg\"><div class=\"author\">Pencinta Sunnah Nabi Muhammad Shallallahu&#039;alaihi wa Sallam<\/div><div class=\"preview\"><span class=\"subject\">Apakah Sah Shalat Tanpa Adzan?<\/span> Syaikh Dr. Syaikh Sholeh Al Fauzan hafizhohullah ditanya,\n\nAku mendengar bahw...<\/div><div class=\"time\"><abbr title=\"19 November 2010 jam 18:02\" data-date=\"Fri, 19 Nov 2010 15:02:33 -0800\" class=\"timestamp\">5 jam yang lalu<\/abbr><\/div><\/div><\/div><\/a><\/li><li class=\"jewelItemNew\"><a href=\"http:\/\/www.facebook.com\/?sk=messages&amp;tid=1326600904079\" title=\" Pesan baru dari MAJELIS TAKLIM KHAIR- Ir.H.Husin Mulachela  -  PENGAJIAN VIRTUAL. CARA BERGURU DALAM MENCARI ILMU: CARA BERGURU DALAM MENCARI ILMU:\n\nALLAH berfirman dalam Al Qur\u2019an surat 18.70...\"><div class=\"UIImageBlock clearfix \"><img class=\"profileImage UIImageBlock_Image UIImageBlock_SMALL_Image img\" src=\"http:\/\/profile.ak.fbcdn.net\/hprofile-ak-snc4\/hs231.ash2\/50415_67887801261_2835_q.jpg\" alt=\"\" \/><div class=\"content UIImageBlock_Content UIImageBlock_SMALL_Content fsm fwn fcg\"><div class=\"author\">MAJELIS TAKLIM KHAIR- Ir.H.Husin Mulachela  -  PENGAJIAN VIRTUAL<\/div><div class=\"preview\"><span class=\"subject\">CARA BERGURU DALAM MENCARI ILMU<\/span> CARA BERGURU DALAM MENCARI ILMU:\n\nALLAH berfirman dalam Al Qur\u2019an surat 18.70...<\/div><div class=\"time\"><abbr title=\"19 November 2010 jam 16:24\" data-date=\"Fri, 19 Nov 2010 13:24:30 -0800\" class=\"timestamp\">7 jam yang lalu<\/abbr><\/div><\/div><\/div><\/a><\/li><li><a href=\"http:\/\/www.facebook.com\/?sk=messages&amp;tid=1713120951757\" title=\"Pesan dari TERNYATA KITA BISA KETAWA. siapa pemilik pisau lipat : Kejadian ini terjadi pada suatu hari di tengah hutan, ketika diadakan\npendidi...\"><div class=\"UIImageBlock clearfix \"><img class=\"profileImage UIImageBlock_Image UIImageBlock_SMALL_Image img\" src=\"http:\/\/profile.ak.fbcdn.net\/hprofile-ak-snc4\/hs223.ash2\/50258_163706574298_1701977_q.jpg\" alt=\"\" \/><div class=\"content UIImageBlock_Content UIImageBlock_SMALL_Content fsm fwn fcg\"><div class=\"author\">TERNYATA KITA BISA KETAWA<\/div><div class=\"preview\"><span class=\"subject\">siapa pemilik pisau lipat <\/span> Kejadian ini terjadi pada suatu hari di tengah hutan, ketika diadakan\npendidi...<\/div><div class=\"time\"><abbr title=\"19 November 2010 jam 8:32\" data-date=\"Fri, 19 Nov 2010 05:32:36 -0800\" class=\"timestamp\">14 jam yang lalu<\/abbr><\/div><\/div><\/div><\/a><\/li><\/div>"}});</script>  <script type="text/javascript" src="http://e.static.ak.fbcdn.net/js_strings.php/t89599/id_ID"></script>
  
+ <script>big_pipe.onPageletArrive({"phase":1,"id":"","is_last":true,"the_end":true,"bootloadable":[],"css":["c\/Wpt","qso4Z","\/UBlr","r\/gWs","Pawg1","hNs+8"],"js":["RpPeo","I9py1","MzxSC","xfC74","dZmKL","FBvzP","Ks1KH"],"resource_map":[],"requires":[],"provides":[],"onload":[],"onafterload":[],"onpagecache":[],"onafterpagecache":[],"refresh_pagelets":[],"invalidate_cache":[]});</script>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              </body></html>
- One principle of Hive is that Hive does not own the HDFS file format - Users should be able to directly read the HDFS files in the Hive tables using other tools, or use other tools to directly write to HDFS files that can be read by Hive through "CREATE EXTERNAL TABLE", or can be loaded into Hive through "LOAD DATA INPATH" which just move the file into Hive table directory.
- 
- Note that org.apache.hadoop.hive.serde is the deprecated old serde library. Please look at org.apache.hadoop.hive.serde2 for the latest version.
- 
- Hive currently use these FileFormat classes to read and write HDFS files:
- 
-  * !TextInputFormat/HiveIgnoreKeyTextOutputFormat: These 2 classes read/write data in plain text file format.
-  * !SequenceFileInputFormat/SequenceFileOutputFormat: These 2 classes read/write data in hadoop !SequenceFile format.
- 
- Hive currently use these !SerDe classes to serialize and deserialize data:
- 
-  * !MetadataTypedColumnsetSerDe: This !SerDe is used to read/write delimited records like CSV, tab-separated control-A separated records (sorry, quote is not supported yet.)
-  * !ThriftSerDe: This !SerDe is used to read/write thrift serialized objects.  The class file for the Thrift object must be loaded first.
-  * !DynamicSerDe: This !SerDe also read/write thrift serialized objects, but it understands thrift DDL so the schema of the object can be provided at runtime.  Also it supports a lot of different protocols, including !TBinaryProtocol, !TJSONProtocol, TCTL!SeparatedProtocol (which writes data in delimited records).
- 
- How to write your own !SerDe:
- 
-  * In most cases, users want to write a Deserializer instead of a !SerDe, because users just want to read their own data format instead of writing to it.
-  * For example, the !RegexDeserializer will deserialize the data using the configuration parameter 'regex', and possibly a list of column names (see serde2.MetadataTypedColumnsetSerDe). Please see serde2/Deserializer.java for details.
-  * If your !SerDe supports DDL (basically, !SerDe with parameterized columns and column types), you probably want to implement a Protocol based on !DynamicSerDe, instead of writing a !SerDe from scratch. The reason is that the framework passes DDL to !SerDe through "thrift DDL" format, and it's non-trivial to write a "thrift DDL" parser.
- 
- Some important points of !SerDe:
- 
-  * !SerDe, not the DDL, defines the table schema. Some !SerDe implementations use the DDL for configuration, but !SerDe can also override that.
-  * Column types can be arbitrarily nested arrays, maps and structures.
-  * The callback design of !ObjectInspector allows lazy deserialization with CASE/IF or when using complex or nested types.
- 
- ==== ObjectInspector ====
- Hive uses !ObjectInspector to analyze the internal structure of the row object and also the structure of the individual columns.
- 
- !ObjectInspector provides a uniform way to access complex objects that can be stored in multiple formats in the memory, including:
- 
-  * Instance of a Java class (Thrift or native Java)
-  * A standard Java object (we use java.util.List to represent Struct and Array, and use java.util.Map to represent Map)
-  * A lazily-initialized object (For example, a Struct of string fields stored in a single Java string object with starting offset for each field)
- 
- A complex object can be represented by a pair of !ObjectInspector and Java Object. The !ObjectInspector not only tells us the structure of the Object, but also gives us ways to access the internal fields inside the Object.
- 
- === MetaStore ===
- MetaStore contains metadata regarding tables, partitions and databases. This is used by Query Processor during plan generation.
- 
-  * Metastore Server - This is the thrift server (interface defined in metastore/if/hive_metastore.if) that services metadata requests from clients. It delegates most of the requests underlying meta data store and the Hadoop file system which contains data.
-  * Object Store - ObjectStore class handles access to the actual metadata is stored in the SQL store. The current implementation uses JPOX ORM solution which is based of JDA specification. It can be used with any database that is supported by JPOX. New meta stores (file based or xml based) can added by implementing the interface MetaStore. FileStore is a partial implementation of an older version of metastore which may be deprecated soon.
-  * Metastore Client - There are python, java, php thrift clients in metastore/src. Java generated client is extended with HiveMetaStoreClient which is used by Query Processor (ql/metadta). This is the main interface to all other Hive components.
- 
- === Query Processor ===
- The following are the main components of the Hive Query Processor:
- 
-  * Parse and SemanticAnalysis (ql/parse) - This component contains the code for parsing SQL, converting it into Abstract Syntax Trees, converting the Abstract Syntax Trees into Operator Plans and finally converting the operator plans into a directed graph of tasks which are executed by Driver.java.
-  * Optimizer (ql/optimizer) - This component contains some simple rule based optimizations like pruning non referenced columns from table scans (column pruning) that the Hive Query Processor does while converting SQL to a series of map/reduce tasks.
-  * Plan Components (ql/plan) - This component contains the classes (which are called descriptors), that are used by the compiler (Parser, SemanticAnalysis and Optimizer) to pass the information to operator trees that is used by the execution code.
-  * MetaData Layer (ql/metadata) - This component is used by the query processor to interface with the MetaStore in order to retrieve information about tables, partitions and the columns of the table. This information is used by the compiler to compile SQL to a series of map/reduce tasks.
-  * Map/Reduce Execution Engine (ql/exec) - This component contains all the query operators and the framework that is used to invoke those operators from within the map/reduces tasks.
-  * Hadoop Record Readers, Input and Output Formatters for Hive (ql/io) - This component contains the record readers and the input, output formatters that Hive registers with a Hadoop Job.
-  * Sessions (ql/session) - A rudimentary session implementation for Hive.
-  * Type interfaces (ql/typeinfo) - This component provides all the type information for table columns that is retrieved from the MetaStore and the SerDes.
-  * Hive Function Framework (ql/udf) - Framework and implementation of Hive operators, Functions and Aggregate Functions. This component also contains the interfaces that a user can implement to create user defined functions.
-  * Tools (ql/tools) - Some simple tools provided by the query processing framework. Currently, this component contains the implementation of the lineage tool that can parse the query and show the source and destination tables of the query.
- 
- ==== Compiler ====
- ==== Parser ====
- ==== TypeChecking ====
- ==== Semantic Analysis ====
- ==== Plan generation ====
- ==== Task generation ====
- ==== Execution Engine ====
- ==== Plan ====
- ==== Operators ====
- ==== UDFs and UDAFs ====
- == Compiling Hive ==
- Hive can be made to compile against different versions of Hadoop.
- 
- === Default Mode ===
- From the root of the source tree:
- 
- {{{
- ant package
- }}}
- will make Hive compile against hadoop version 0.19.0. Note that:
- 
-  * Hive uses Ivy to download the hadoop-0.19.0 distribution. However once downloaded, it's cached and not downloaded multiple times
-  * This will create a distribution directory in build/dist (relative to the source root) from where one can launch Hive. This distribution should only be used to execute queries against hadoop branch 0.19. (Hive is not sensitive to minor revisions of Hadoop versions).
- 
- === Advanced Mode ===
-  * One can specify a custom distribution directory by using:
- 
- {{{
- ant -Dtarget.dir=<my-install-dir> package
- }}}
-  * One can specify a version of hadoop other than 0.19.0 by using (using 0.17.1 as an example):
- 
- {{{
- ant -Dhadoop.version=0.17.1 package
- }}}
-  * One can also compile against a custom version of the Hadoop tree (only release 0.4 and above). This is also useful if running Ivy is problematic (in disconnected mode for example) - but a hadoop tree is available. This can be done by specifying the root of the hadoop source tree to be used, for example:
- 
- {{{
- ant -Dhadoop.root=~/src/hadoop-19/build/hadoop-0.19.2-dev -Dhadoop.version=0.19.2-dev
- }}}
- note that:
- 
-  * hive's build script assumes that {{{hadoop.root}}} is pointing to a distribution tree for hadoop created by running ant package in hadoop
-  * {{{hadoop.version}}} must match the version used in building hadoop
- 
- In this particular example - {{{~/src/hadoop-19}}} is a checkout of the hadoop 19 branch that uses {{{0.19.2-dev}}} as default version and creates a distribution directory in {{{build/hadoop-0.19.2-dev}}} by default.
- 
- == Unit tests and debugging ==
- === Layout of the unit tests ===
- Hive uses junit for unit tests. Each of the 3 main components of Hive have their unit test implementations in the corresponding src/test directory e.g. trunk/metastore/src/test has all the unit tests for metastore, trunk/serde/src/test has all the unit tests for serde and trunk/ql/src/test has all the unit tests for the query processor. The metastore and serde unit tests provide the !TestCase implementations for junit. The query processor tests on the other hand are generated using Velocity. The main directories under trunk/ql/src/test that contain these tests and the corresponding results are as follows:
- 
-  * Test Queries:
-   * queries/clientnegative - This directory contains the query files (.q files) for the negative test cases. These are run through the CLI classes and therefore test the entire query processor stack.
-   * queries/clientpositive - This directory contains the query files (.q files) for the positive test cases. Thesre are run through the CLI classes and therefore test the entire query processor stack.
-   * qureies/positive (Will be deprecated) - This directory contains the query files (.q files) for the positive test cases for the compiler. These only test the compiler and do not run the execution code.
-   * queries/negative (Will be deprecated) - This directory contains the query files (.q files) for the negative test cases for the compiler. These only test the compiler and do not run the execution code.
-  * Test Results:
-   * results/clientnegative - The expected results from the queries in queries/clientnegative.
-   * results/clientpositive - The expected results from the queries in queries/clientpositive.
-   * results/compiler/errors - The expected results from the queries in queries/negative.
-   * results/compiler/parse - The expected Abstract Syntax Tree output for the queries in queries/positive.
-   * results/compiler/plan - The expected query plans for the queries in queries/positive.
-  * Velocity Templates to Generate the tests:
-   * templates/!TestCliDriver.vm - Generates the tests from queries/clientpositive.
-   * templates/!TestNegativeCliDriver.vm - Generates the tests from queries/clientnegative.
-   * templates/!TestParse.vm - Generates the tests from queries/positive.
-   * templates/!TestParseNegative.vm - Generates the tests from queries/negative.
- 
- === Tables in the unit tests ===
- === Running unit tests ===
- Run all tests:
- 
- {{{
- ant test
- }}}
- Run all positive test queries:
- 
- {{{
- ant test -Dtestcase=TestCliDriver
- }}}
- Run a specific positive test query:
- 
- {{{
- ant test -Dtestcase=TestCliDriver -Dqfile=groupby1.q
- }}}
- The about test produces the following files:
- 
-  * {{{build/ql/test/TEST-org.apache.hadoop.hive.cli.TestCliDriver.txt}}} - Log output for the test.  This can be helpful when examining test failures.
-  * {{{build/ql/test/logs/groupby1.q.out}}} - Actual query result for the test.  This result is compared to the expected result as part of the test.
- 
- === Adding new unit tests ===
- First, write a new myname.q in ql/src/test/queries/clientpositive
- 
- Then, run the test with the query and overwrite the result (useful when you add a new test)
- 
- {{{
- ant test -Dtestcase=TestCliDriver -Dqfile=myname.q -Doverwrite=true
- }}}
- Then we can create a patch by:
- 
- {{{
- svn add ql/src/test/queries/clientpositive/myname.q ql/src/test/results/clientpositive/myname.q.out
- svn diff > patch.txt
- }}}
- Similarly, to add negative client tests, write a new query input file in ql/src/test/queries/clientnegative and run the same command, this time specifying the testcase name as !TestNegativeCliDriver instead of !TestCliDriver. Note that for negative client tests, the output file if created using the overwrite flag can be be found in the directory ql/src/test/results/clientnegative.
- 
- See also [[Hive/TipsForAddingNewTests|Tips for adding new Tests]].
- 
- Debugging Hive
- 
- === Debugging Hive code ===
- Hive code includes both client-side code (e.g., compiler, semantic analyzer, and optimizer of HiveQL) and server-side code (e.g., operator/task/SerDe implementations). The client-side code are running on your local machine so you can easily debug it using Eclipse the same way as you debug a regular local Java code.  Here are the steps to debug code within a unit test.
-  * make sure that you have run {{{ant model-jar}}} in hive/metastore and {{{ant gen-test}}} in hive/ql since the last time you ran {{{ant clean}}}
-  * To run all of the unit tests for the Cli, open up TestCliDriver.java
-   * click Run->Debug Configurations , select TestCliDriver, and click Debug
-  * To run a single test within TestCliDriver.java
-   * Begin running the whole TestCli suite as before
-   * Once it finishes the setup and starts executing the JUnit tests, stop the test execution
-   * Find the desired test in the JUnit pane
-   * Right click on that test and select Debug
- 
- The server-side code is distributed and running on the Hadoop cluster, so debugging server-side Hive code is a little bit complicated. In addition to printing to log files using log4j, you can also attach the debugger to a different JVM under unit test (single machine mode). Below are the steps on how to debug on server-side code.
- 
-  * Compile Hive code with javac.debug=on. Under Hive checkout directory.
-  {{{
-     > ant -Djavac.debug=on package
- }}}
-  If you have already built Hive without javac.debug=on, you can clean the build and then run the above command.
-  {{{
-     > ant clean  # not necessary if the first time to compile
-     > ant -Djavac.debug=on package
- }}}
-  * Run ant test with additional options to tell the Java VM that is running Hive server-side code to wait for the debugger to attach. First define some convenient macros for debugging. You can put it in your .bashrc or .cshrc.
-  {{{
-     > export HIVE_DEBUG_PORT=8000
-     > export $HIVE_DEBUG="-Xdebug -Xrunjdwp:transport=dt_socket,address=${HIVE_DEBUG_PORT},server=y,suspend=y"
- }}}
-  In particular HIVE_DEBUG_PORT is the port number that the JVM is listening on and the debugger will attach to. Then run the unit test as follows:
-  {{{
-     > HADOOP_OPTS=$HIVE_DEBUG
-     > ant test -Dtestcase=TestCliDriver -Dqfile=<mytest>.q
- }}}
-  The unit test will run until it shows:
-  {{{
-      [junit] Listening for transport dt_socket at address: 8000
- }}}
-  * Now, you can use jdb to attach to port 8000 to debug
-  {{{
-     > jdb -attach 8000
- }}}
-  or if you are running Eclipse and the Hive projects are already imported, you can debug with Eclipse. Under Eclipse Run -> Debug Configurations, find "Remote Java Application" at the bottom of the left panel. There should be a MapRedTask configuration already. If there is no such configuration, you can create one with the following property:
-   * Name: any time such as MapRedTask
-   * Project:  the Hive project that you imported.
-   * Connection Type: Standard (Socket Attach)
-   * Connection Properties:
-    * Host: localhost
-    * Port: 8000
-   Then hit the "Debug" button and Eclipse will attach to the JVM listening on port 8000 and continue running till the end. If you define breakpoints in the source code before hitting the "Debug" button, it will stop there. The rest is the same as debugging client-side Hive.
- 
- == Pluggable interfaces ==
- === File Formats ===
- Please refer to [[http://www.slideshare.net/ragho/hive-user-meeting-august-2009-facebook|Hive User Group Meeting August 2009]] Page 59-63.
- 
- === SerDe - how to add a new SerDe ===
- Please refer to [[http://www.slideshare.net/ragho/hive-user-meeting-august-2009-facebook|Hive User Group Meeting August 2009]] Page 64-70.
- 
- === Map-Reduce Scripts ===
- Please refer to [[http://www.slideshare.net/ragho/hive-user-meeting-august-2009-facebook|Hive User Group Meeting August 2009]] Page 71-73.
- 
- === UDFs and UDAFs - how to add new UDFs and UDAFs ===
- Please refer to [[http://www.slideshare.net/ragho/hive-user-meeting-august-2009-facebook|Hive User Group Meeting August 2009]] Page 74-87.
- 

Mime
View raw message