You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2018/07/02 06:08:51 UTC
svn commit: r1834820 [5/48] - in /kylin/site: ./ about/ blog/
blog/2015/01/25/introduce-data-model/
blog/2015/06/10/release-v0.7.1-incubating/
blog/2015/08/13/kylin-dictionary/ blog/2015/08/15/fast-cubing/
blog/2015/09/06/release-v1.0-incubating/ blog/...
Modified: kylin/site/cn/docs23/howto/howto_optimize_build.html
URL: http://svn.apache.org/viewvc/kylin/site/cn/docs23/howto/howto_optimize_build.html?rev=1834820&r1=1834819&r2=1834820&view=diff
==============================================================================
--- kylin/site/cn/docs23/howto/howto_optimize_build.html (original)
+++ kylin/site/cn/docs23/howto/howto_optimize_build.html Mon Jul 2 06:08:48 2018
@@ -160,7 +160,179 @@ var _hmt = _hmt || [];
<div class="container">
- <div class="row">
+ <div class="row" style="clear:both;">
+ <div class="col-md-8 col-lg-8 col-xs-12 col-sm-12 aside2" style="float:right;">
+ <div id="container" class="docs">
+ <div id="pjax">
+ <h1 class="post-title">ä¼å Cube æ建</h1>
+ <article class="post-content" >
+ <p>Kylinå°Cubeæ建任å¡å解为å 个ä¾æ¬¡æ§è¡çæ¥éª¤ï¼è¿äºæ¥éª¤å
æ¬Hiveæä½ãMapReduceæä½åå
¶ä»ç±»åçæä½ãå¦æä½ æå¾å¤Cubeæ建任å¡éè¦æ¯å¤©è¿è¡ï¼é£ä¹ä½ è¯å®æ³è¦åå°å
¶ä¸æ¶èçæ¶é´ãä¸ææç
§Cubeæ建æ¥éª¤é¡ºåºæä¾äºä¸äºä¼åç»éªã</p>
+
+<h2 id="hive">å建Hiveçä¸é´å¹³è¡¨</h2>
+
+<p>è¿ä¸æ¥å°æ°æ®ä»æºHive表æååºæ¥(åææjoinç表ä¸èµ·)并æå
¥å°ä¸ä¸ªä¸é´å¹³è¡¨ãå¦æCubeæ¯ååºçï¼Kylinä¼å ä¸ä¸ä¸ªæ¶é´æ¡ä»¶ä»¥ç¡®ä¿åªæå¨æ¶é´èå´å
çæ°æ®æä¼è¢«æåãä½ å¯ä»¥å¨è¿ä¸ªæ¥éª¤çlogæ¥çç¸å
³çHiveå½ä»¤ï¼æ¯å¦ï¼</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>hive -e "USE default;
+DROP TABLE IF EXISTS kylin_intermediate_airline_cube_v3610f668a3cdb437e8373c034430f6c34;
+
+CREATE EXTERNAL TABLE IF NOT EXISTS kylin_intermediate_airline_cube_v3610f668a3cdb437e8373c034430f6c34
+(AIRLINE_FLIGHTDATE date,AIRLINE_YEAR int,AIRLINE_QUARTER int,...,AIRLINE_ARRDELAYMINUTES int)
+STORED AS SEQUENCEFILE
+LOCATION 'hdfs:///kylin/kylin200instance/kylin-0a8d71e8-df77-495f-b501-03c06f785b6c/kylin_intermediate_airline_cube_v3610f668a3cdb437e8373c034430f6c34';
+
+SET dfs.replication=2;
+SET hive.exec.compress.output=true;
+SET hive.auto.convert.join.noconditionaltask=true;
+SET hive.auto.convert.join.noconditionaltask.size=100000000;
+SET mapreduce.job.split.metainfo.maxsize=-1;
+
+INSERT OVERWRITE TABLE kylin_intermediate_airline_cube_v3610f668a3cdb437e8373c034430f6c34 SELECT
+AIRLINE.FLIGHTDATE
+,AIRLINE.YEAR
+,AIRLINE.QUARTER
+,...
+,AIRLINE.ARRDELAYMINUTES
+FROM AIRLINE.AIRLINE as AIRLINE
+WHERE (AIRLINE.FLIGHTDATE >= '1987-10-01' AND AIRLINE.FLIGHTDATE < '2017-01-01');
+
+</code></pre>
+</div>
+
+<p>å¨Hiveå½ä»¤è¿è¡æ¶ï¼Kylinä¼ç¨<code class="highlighter-rouge">conf/kylin_hive_conf.properties</code>éçé
ç½®ï¼æ¯å¦ä¿çæ´å°çåä½å¤ä»½åå¯ç¨Hiveçmapper side joinãéè¦çè¯å¯ä»¥æ ¹æ®é群çå
·ä½æ
åµå¢å å
¶ä»é
ç½®ã</p>
+
+<p>å¦æcubeçååºå(å¨è¿ä¸ªæ¡ä¾ä¸æ¯âFIGHTDATEâ)ä¸Hive表çååºåç¸åï¼é£ä¹æ ¹æ®å®è¿æ»¤æ°æ®è½è®©Hiveèªæå°è·³è¿ä¸å¹é
çååºãå æ¤å¼ºç建议ç¨Hiveçååºåï¼å¦æå®æ¯æ¥æåï¼ä½ä¸ºcubeçååºåãè¿å¯¹äºé£äºæ°æ®éå¾å¤§ç表æ¥è¯´å ä¹æ¯å¿
é¡»çï¼å¦åHiveä¸å¾ä¸æ¯æ¬¡å¨è¿æ¥æ«æå
¨é¨æ件ï¼æ¶èé常é¿çæ¶é´ã</p>
+
+<p>å¦æå¯ç¨äºHiveçæ件å并ï¼ä½ å¯ä»¥å¨<code class="highlighter-rouge">conf/kylin_hive_conf.xml</code>éå
³éå®ï¼å 为Kylinæèªå·±å并æ件çæ¹æ³(ä¸ä¸è)ï¼</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><property>
+ <name>hive.merge.mapfiles</name>
+ <value>false</value>
+ <description>Disable Hive's auto merge</description>
+</property>
+</code></pre>
+</div>
+
+<h2 id="section">éæ°ååä¸é´è¡¨</h2>
+
+<p>å¨ä¹åçä¸æ¥ä¹åï¼Hiveå¨HDFSä¸çç®å½éçæäºæ°æ®æ件ï¼æäºæ¯å¤§æ件ï¼æäºæ¯å°æ件çè³ç©ºæ件ãè¿ç§ä¸å¹³è¡¡çæ件åå¸ä¼å¯¼è´ä¹åçMRä»»å¡åºç°æ°æ®å¾æçé®é¢ï¼æäºmapperå®æå¾å¾å¿«ï¼ä½å
¶ä»çå°±å¾æ
¢ãé对è¿ä¸ªé®é¢ï¼Kylinå¢å äºè¿ä¸ä¸ªæ¥éª¤æ¥âéæ°ååâæ°æ®ï¼è¿æ¯ç¤ºä¾è¾åº:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>total input rows = 159869711
+expected input rows per mapper = 1000000
+num reducers for RedistributeFlatHiveTableStep = 160
+
+</code></pre>
+</div>
+
+<p>éæ°åå表çå½ä»¤ï¼</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>hive -e "USE default;
+SET dfs.replication=2;
+SET hive.exec.compress.output=true;
+SET hive.auto.convert.join.noconditionaltask=true;
+SET hive.auto.convert.join.noconditionaltask.size=100000000;
+SET mapreduce.job.split.metainfo.maxsize=-1;
+set mapreduce.job.reduces=160;
+set hive.merge.mapredfiles=false;
+
+INSERT OVERWRITE TABLE kylin_intermediate_airline_cube_v3610f668a3cdb437e8373c034430f6c34 SELECT * FROM kylin_intermediate_airline_cube_v3610f668a3cdb437e8373c034430f6c34 DISTRIBUTE BY RAND();
+"
+</code></pre>
+</div>
+
+<p>é¦å
ï¼Kylin计ç®åºä¸é´è¡¨çè¡æ°ï¼ç¶ååºäºè¡æ°ç大å°ç®åºéæ°ååæ°æ®éè¦çæ件æ°ãé»è®¤æ
åµä¸,Kylin为æ¯ä¸ç¾ä¸è¡åé
ä¸ä¸ªæ件ãå¨è¿ä¸ªä¾åä¸ï¼æ1.6亿è¡å160个reducerï¼æ¯ä¸ªreducerä¼åä¸ä¸ªæ件ãå¨æ¥ä¸æ¥å¯¹è¿å¼ 表è¿è¡çMRæ¥éª¤éï¼Hadoopä¼å¯å¨åæ件ç¸åæ°éçmapperæ¥å¤çæ°æ®(é常ä¸ç¾ä¸è¡æ°æ®æ¯ä¸ä¸ªHDFSæ°æ®åè¦å°)ãå¦æä½ çæ¥å¸¸æ°æ®é没æè¿ä¹å¤§æè
Hadoopé群æ足å¤çèµæºï¼ä½ æ许æ³è¦æ´�
�¤ç并åæ°ï¼è¿æ¶å¯ä»¥å°<code class="highlighter-rouge">conf/kylin.properties</code>éç<code class="highlighter-rouge">kylin.job.mapreduce.mapper.input.rows</code>设为å°ä¸ç¹çæ°å¼ï¼æ¯å¦:</p>
+
+<p><code class="highlighter-rouge">kylin.job.mapreduce.mapper.input.rows=500000</code></p>
+
+<p>å
¶æ¬¡ï¼Kylinä¼è¿è¡ <em>âINSERT OVERWRITE TABLE ⦠DISTRIBUTE BY â</em> å½¢å¼çHiveQLæ¥ååæ°æ®å°æå®æ°éçreducerä¸ã</p>
+
+<p>å¨å¾å¤æ
åµä¸ï¼Kylin请æ±Hiveéæºååæ°æ®å°reducerï¼ç¶åå¾å°å¤§å°ç¸è¿çæ件ï¼ååçè¯å¥æ¯âDISTRIBUTE BY RAND()âã</p>
+
+<p>å¦æä½ çcubeæå®äºä¸ä¸ªé«åºæ°çåï¼æ¯å¦âUSER_IDâï¼ä½ä¸ºâåçâ维度(å¨cubeçâé«çº§è®¾ç½®â页é¢)ï¼Kylinä¼è®©Hiveæ ¹æ®è¯¥åçå¼éæ°ååæ°æ®ï¼é£ä¹å¨è¯¥åæçç¸åå¼çè¡å°è¢«ååå°åä¸ä¸ªæ件ãè¿æ¯éæºè¦ååè¦å¥½å¾å¤ï¼å 为ä¸ä»
éæ°åå¸äºæ°æ®ï¼å¹¶ä¸å¨æ²¡æé¢å¤ä»£ä»·çæ
åµä¸å¯¹æ°æ®è¿è¡äºé¢å
åç±»ï¼å¦æ¤ä¸æ¥æ¥ä¸æ¥çcube buildå¤çä¼ä»ä¸åçãå¨å
¸åçåºæ¯ä¸ï¼è¿æ ·ä¼åå¯ä»¥åå°40%çbuildæ
¶é¿ãå¨è¿ä¸ªæ¡ä¾ä¸ååçè¯å¥æ¯âDISTRIBUTE BY USER_IDâï¼</p>
+
+<p>请注æ: 1)âåçâååºè¯¥æ¯é«åºæ°ç维度åï¼å¹¶ä¸å®ä¼åºç°å¨å¾å¤çcuboidä¸ï¼ä¸åªæ¯åºç°å¨å°æ°çcuboidï¼ã 使ç¨å®æ¥åçè¿è¡ååå¯ä»¥å¨æ¯ä¸ªæ¶é´èå´å
çæ°æ®åååå¸ï¼å¦åä¼é ææ°æ®å¾æï¼ä»èéä½buildæçãå
¸åçæ£é¢ä¾åæ¯ï¼âUSER_IDâãâSELLER_IDâãâPRODUCTâãâCELL_NUMBERâççï¼è¿äºåçåºæ°åºè¯¥å¤§äºä¸å(è¿å¤§äºreducerçæ°é)ã 2)âåçâ对cubeçåå¨åæ ·æ好å¤ï¼ä¸è¿è¿è¶
åºäºæ¬æçèå
´ã</p>
+
+<h2 id="section-1">æåäºå®è¡¨çå¯ä¸å</h2>
+
+<p>å¨è¿ä¸æ¥éª¤Kylinè¿è¡MRä»»å¡æ¥æå使ç¨åå
¸ç¼ç ç维度åçå¯ä¸å¼ã</p>
+
+<p>å®é
ä¸è¿æ¥å¦å¤è¿åäºä¸äºäºæ
ï¼éè¿HyperLogLog计æ°å¨æ¶écubeçç»è®¡æ°æ®ï¼ç¨äºä¼°ç®æ¯ä¸ªcuboidçè¡æ°ãå¦æä½ åç°mapperè¿è¡å¾å¾æ
¢ï¼è¿é常表æcubeç设计太è¿å¤æï¼è¯·åè<br />
+<a href="howto_optimize_cubes.html">ä¼åcube设计</a>æ¥ç®åcubeãå¦æreduceråºç°äºå
å溢åºé误ï¼è¿è¡¨æcuboidç»åçç太å¤äºæè
æ¯YARNçå
ååé
满足ä¸äºéè¦ãå¦æè¿ä¸æ¥ä»ä»»ä½æä¹ä¸è®²ä¸è½å¨åççæ¶é´å
å®æï¼ä½ å¯ä»¥æ¾å¼ä»»å¡å¹¶èèéæ°è®¾è®¡cubeï¼å 为继ç»ä¸å»ä¼è±è´¹æ´é¿çæ¶é´ã</p>
+
+<p>ä½ å¯ä»¥éè¿éä½åæ ·çæ¯ä¾ï¼kylin.job.cubing.inmen.sampling.percentï¼æ¥å éè¿ä¸ªæ¥éª¤ï¼ä½æ¯å¸®å©å¯è½ä¸å¤§èä¸å½±åäºcubeç»è®¡æ°æ®çåç¡®æ§ï¼æææ们并ä¸æ¨èã</p>
+
+<h2 id="section-2">æ建维度åå
¸</h2>
+
+<p>æäºåä¸æ¥æåç维度åå¯ä¸å¼ï¼Kylinä¼å¨å
åéæ建åå
¸ï¼å¨ä¸ä¸ªçæ¬å°æ¹ä¸ºMapReduceä»»å¡ï¼ãé常è¿ä¸æ¥æ¯è¾å¿«ï¼ä½å¦æå¯ä¸å¼éåå¾å¤§ï¼Kylinå¯è½ä¼æ¥åºç±»ä¼¼âåå
¸ä¸æ¯æè¿é«åºæ°âã对äºUHCç±»åçåï¼è¯·ä½¿ç¨å
¶ä»ç¼ç æ¹å¼ï¼æ¯å¦âfixed_lengthâãâintegerâççã</p>
+
+<h2 id="cuboid-htable">ä¿åcuboidçç»è®¡æ°æ®åå建 HTable</h2>
+
+<p>è¿ä¸¤æ¥æ¯è½»é级åå¿«éçã</p>
+
+<h2 id="cuboid">æ建åºç¡cuboid</h2>
+
+<p>è¿ä¸æ¥ç¨Hiveçä¸é´è¡¨æ建åºç¡çcuboidï¼æ¯âéå±âæ建cubeç®æ³ç第ä¸è½®MR计ç®ãMapperçæ°ç®ä¸ç¬¬äºæ¥çreduceræ°ç®ç¸çï¼Reducerçæ°ç®æ¯æ ¹æ®cubeç»è®¡æ°æ®ä¼°ç®çï¼é»è®¤æ
åµä¸æ¯500MBè¾åºä½¿ç¨ä¸ä¸ªreducerï¼å¦æè§å¯å°reducerçæ°éè¾å°ï¼ä½ å¯ä»¥å°kylin.propertieséçâkylin.job.mapreduce.default.reduce.input.mbâ设为å°ä¸ç¹çæ°å¼ä»¥è·å¾è¿å¤çèµæºï¼æ¯å¦:</p>
+
+<p><code class="highlighter-rouge">kylin.job.mapreduce.default.reduce.input.mb=200</code></p>
+
+<h2 id="build-n-dimension-cuboid">Build N-Dimension Cuboid</h2>
+<p>## æ建Nç»´cuboid</p>
+
+<p>è¿äºæ¥éª¤æ¯âéå±âæ建cubeçè¿ç¨ï¼æ¯ä¸æ¥ä»¥åä¸æ¥çè¾åºä½ä¸ºè¾å
¥ï¼ç¶åå»æä¸ä¸ªç»´åº¦ä»¥èåå¾å°ä¸ä¸ªåcuboidã举个ä¾åï¼cuboid ABCDå»æAå¾å°BCDï¼å»æBå¾å°ACDã</p>
+
+<p>æäºcuboidå¯ä»¥ä»ä¸ä¸ªä»¥ä¸çç¶cuboidèåå¾å°ï¼è¿ç§æ
åµä¸ï¼Kylinä¼éæ©æå°çä¸ä¸ªç¶cuboidã举ä¾,ABå¯ä»¥ä»ABC(id:1110)åABD(id:1101)çæï¼åABDä¼è¢«éä¸ï¼å 为å®çæ¯ABCè¦å°ãå¨è¿åºç¡ä¸ï¼å¦æDçåºæ°è¾å°ï¼èåè¿ç®çææ¬å°±ä¼æ¯è¾ä½ãæ以ï¼å½è®¾è®¡rowkeyåºåçæ¶åï¼è¯·è®°å¾å°åºæ°è¾å°ç维度æ¾å¨æ«å°¾ãè¿æ ·ä¸ä»
æå©äºcubeæ建ï¼èä¸æå©äºcubeæ¥è¯¢ï¼å 为é¢èåä¹éµå¾ªç¸åçè§åã</p>
+
+<p>é常æ¥è¯´ï¼ä»Nç»´å°(N/2)ç»´çæ建æ¯è¾æ
¢ï¼å 为è¿æ¯cuboidæ°éçç¸æ§å¢é¿çé¶æ®µï¼Nç»´æ1个cuboidï¼(N-1)ç»´æN个cuboidï¼(N-2)ç»´æN*(N-1)个cuboidï¼ä»¥æ¤ç±»æ¨ãç»è¿(N/2)ç»´æ建çæ¥éª¤ï¼æ´ä¸ªæ建任å¡ä¼éæ¸åå¿«ã</p>
+
+<h2 id="cube">æ建cube</h2>
+
+<p>è¿ä¸ªæ¥éª¤ä½¿ç¨ä¸ä¸ªæ°çç®æ³æ¥æ建cubeï¼âéçâæ建ï¼ä¹ç§°ä¸ºâå
åâæ建ï¼ãå®ä¼ä½¿ç¨ä¸è½®MRæ¥è®¡ç®ææçcuboidsï¼ä½æ¯æ¯é常æ
åµä¸æ´èå
åãé
ç½®æ件âconf/kylin_job_inmem.xmlâæ£æ¯ä¸ºè¿æ¥è设ãé»è®¤æ
åµä¸å®ä¸ºæ¯ä¸ªmapperç³è¯·3GBå
åãå¦æä½ çé群æå
足çå
åï¼ä½ å¯ä»¥å¨ä¸è¿°é
ç½®æ件ä¸åé
æ´å¤å
åç»mapperï¼è¿æ ·å®ä¼ç¨å°½å¯è½å¤çå
åæ¥ç¼åæ°æ®ä»¥è·å¾æ´å¥½çæ§è½ï¼æ¯å¦ï¼</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><property>
+ <name>mapreduce.map.memory.mb</name>
+ <value>6144</value>
+ <description></description>
+</property>
+
+<property>
+ <name>mapreduce.map.java.opts</name>
+ <value>-Xmx5632m</value>
+ <description></description>
+</property>
+</code></pre>
+</div>
+
+<p>请注æï¼Kylinä¼æ ¹æ®æ°æ®åå¸ï¼ä»cubeçç»è®¡æ°æ®éè·å¾ï¼èªå¨éæ©æä¼çç®æ³ï¼æ²¡æ被éä¸çç®æ³å¯¹åºçæ¥éª¤ä¼è¢«è·³è¿ãä½ ä¸éè¦æ¾å¼å°éæ©æ建ç®æ³ã</p>
+
+<h2 id="cuboidhfile">å°cuboidæ°æ®è½¬æ¢ä¸ºHFile</h2>
+
+<p>è¿ä¸æ¥å¯å¨ä¸ä¸ªMRä»»å¡æ¥è®²cuboidæ件ï¼åºåæä»¶æ ¼å¼ï¼è½¬æ¢ä¸ºHBaseçHFileæ ¼å¼ãKylinéè¿cubeç»è®¡æ°æ®è®¡ç®HBaseçregionæ°ç®ï¼é»è®¤æ
åµä¸æ¯5GBæ°æ®å¯¹åºä¸ä¸ªregionãRegionè¶å¤ï¼MR使ç¨çreducerä¹ä¼è¶å¤ãå¦æä½ è§å¯å°reduceræ°ç®è¾å°ä¸æ§è½è¾å·®ï¼ä½ å¯ä»¥å°âconf/kylin.propertiesâéç以ä¸åæ°è®¾å°ä¸ç¹ï¼æ¯å¦ï¼</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>kylin.hbase.region.cut=2
+kylin.hbase.hfile.size.gb=1
+</code></pre>
+</div>
+
+<p>å¦æä½ ä¸ç¡®å®ä¸ä¸ªregionåºè¯¥æ¯å¤å¤§æ¶ï¼èç³»ä½ çHBase管çåã</p>
+
+<h2 id="hfilehbase">å°HFile导å
¥HBase表</h2>
+
+<p>è¿ä¸æ¥ä½¿ç¨HBase APIæ¥è®²HFile导å
¥region serverï¼è¿æ¯è½»é级并快éçä¸æ¥ã</p>
+
+<h2 id="cube-1">æ´æ°cubeä¿¡æ¯</h2>
+
+<p>å¨å¯¼å
¥æ°æ®å°HBaseåï¼Kylinå¨å
æ°æ®ä¸å°å¯¹åºçcube segmentæ 记为readyã</p>
+
+<h2 id="section-3">æ¸
çèµæº</h2>
+
+<p>å°ä¸é´å®½è¡¨ä»Hiveå é¤ãè¿ä¸æ¥ä¸ä¼é»å¡ä»»ä½æä½ï¼å 为å¨åä¸æ¥segmentå·²ç»è¢«æ 记为readyãå¦æè¿ä¸æ¥åçé误ï¼ä¸ç¨æ
å¿ï¼åå¾åæ¶å·¥ä½å¯ä»¥æäºåéè¿Kylinç<a href="howto_cleanup_storage.html">StorageCleanupJob</a>å®æã</p>
+
+<h2 id="section-4">æ»ç»</h2>
+<p>è¿æé常å¤å
¶ä»æé«Kylinæ§è½çæ¹æ³ï¼å¦æä½ æç»éªå¯ä»¥å享ï¼æ¬¢è¿éè¿<a href="mailto:dev@kylin.apache.org">dev@kylin.apache.org</a>讨论ã</p>
+
+ </article>
+ </div>
+ </div>
+ </div>
<!--
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -252,6 +424,10 @@ var _hmt = _hmt || [];
+
+
+
+
<li class="navlist">
<a href="/cn/docs23/index.html" class="list-group-item-lay pjaxlink ">æ¦è¿°</a>
</li>
@@ -355,33 +531,13 @@ var _hmt = _hmt || [];
-
-
<li class="navlist">
- <a href="/cn/docs23/install/manual_install_guide.html" class="list-group-item-lay pjaxlink ">æå¨å®è£
æå</a>
+ <a href="/cn/docs23/install/index.html" class="list-group-item-lay pjaxlink ">å®è£
æå</a>
</li>
-
-
-
-
- <ul>
- </div>
-</div>
-
- <li><a href="#titleæç¨" data-toggle="collapse" class="navtitle">æç¨</a></li>
- <div class="collapse in">
- <div class="list-group" id="list1">
- <ul>
-
-
-
-
-
-
@@ -468,14 +624,8 @@ var _hmt = _hmt || [];
-
-
-
-
-
-
<li class="navlist">
- <a href="/cn/docs23/tutorial/create_cube.html" class="list-group-item-lay pjaxlink ">Cube å建</a>
+ <a href="/cn/docs23/install/kylin_cluster.html" class="list-group-item-lay pjaxlink ">Cluster 模å¼ä¸é¨ç½²</a>
</li>
@@ -553,32 +703,8 @@ var _hmt = _hmt || [];
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
<li class="navlist">
- <a href="/cn/docs23/tutorial/cube_build_job.html" class="list-group-item-lay pjaxlink ">Cube æ建å Job çæ§</a>
+ <a href="/cn/docs23/install/configuration.html" class="list-group-item-lay pjaxlink ">Kylin é
ç½®</a>
</li>
@@ -652,22 +778,21 @@ var _hmt = _hmt || [];
+ <li class="navlist">
+ <a href="/cn/docs23/install/advance_settings.html" class="list-group-item-lay pjaxlink ">é«çº§è®¾ç½®</a>
+ </li>
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
-
+
+
+
@@ -742,7 +867,10 @@ var _hmt = _hmt || [];
-
+ <li class="navlist">
+ <a href="/cn/docs23/install/kylin_aws_emr.html" class="list-group-item-lay pjaxlink ">å¨ AWS EMR ä¸ å®è£
Kylin</a>
+ </li>
+
@@ -836,13 +964,40 @@ var _hmt = _hmt || [];
-
-
-
+ <li class="navlist">
+ <a href="/cn/docs23/install/kylin_docker.html" class="list-group-item-lay pjaxlink ">ç¨ Docker è¿è¡ Kylin</a>
+ </li>
+
+
+
+
+
+
+
+
+ <ul>
+ </div>
+</div>
+
+ <li><a href="#titleæç¨" data-toggle="collapse" class="navtitle">æç¨</a></li>
+ <div class="collapse in">
+ <div class="list-group" id="list1">
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
@@ -902,21 +1057,12 @@ var _hmt = _hmt || [];
- <li class="navlist">
- <a href="/cn/docs23/tutorial/web.html" class="list-group-item-lay pjaxlink ">Web çé¢</a>
- </li>
-
-
-
-
-
+
-
-
-
+
@@ -981,9 +1127,22 @@ var _hmt = _hmt || [];
+ <li class="navlist">
+ <a href="/cn/docs23/tutorial/kylin_sample.html" class="list-group-item-lay pjaxlink ">æ ·ä¾ Cube å¿«éå
¥é¨</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
@@ -1023,21 +1182,14 @@ var _hmt = _hmt || [];
- <li class="navlist">
- <a href="/cn/docs23/tutorial/kylin_client_tool.html" class="list-group-item-lay pjaxlink ">Python 客æ·ç«¯å·¥å
ጼ</a>
- </li>
-
-
-
-
-
+
-
-
-
+
+
+
@@ -1175,7 +1327,7 @@ var _hmt = _hmt || [];
<li class="navlist">
- <a href="/cn/docs23/tutorial/tableau.html" class="list-group-item-lay pjaxlink ">Tableau</a>
+ <a href="/cn/docs23/tutorial/web.html" class="list-group-item-lay pjaxlink ">Web çé¢</a>
</li>
@@ -1287,6 +1439,81 @@ var _hmt = _hmt || [];
+ <li class="navlist">
+ <a href="/cn/docs23/tutorial/create_cube.html" class="list-group-item-lay pjaxlink ">Cube å建</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1330,7 +1557,7 @@ var _hmt = _hmt || [];
<li class="navlist">
- <a href="/cn/docs23/tutorial/tableau_91.html" class="list-group-item-lay pjaxlink ">Tableau 9</a>
+ <a href="/cn/docs23/tutorial/cube_build_job.html" class="list-group-item-lay pjaxlink ">Cube æ建å Job çæ§</a>
</li>
@@ -1462,8 +1689,34 @@ var _hmt = _hmt || [];
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<li class="navlist">
- <a href="/cn/docs23/tutorial/powerbi.html" class="list-group-item-lay pjaxlink ">MS ExcelåPower BIæç¨</a>
+ <a href="/cn/docs23/tutorial/project_level_acl.html" class="list-group-item-lay pjaxlink ">Project Level ACL</a>
</li>
@@ -1587,12 +1840,8 @@ var _hmt = _hmt || [];
-
-
-
-
<li class="navlist">
- <a href="/cn/docs23/tutorial/odbc.html" class="list-group-item-lay pjaxlink ">ODBC 驱å¨ç¨åº</a>
+ <a href="/cn/docs23/tutorial/cube_spark.html" class="list-group-item-lay pjaxlink ">ç¨ Spark æ建 Cube</a>
</li>
@@ -1682,39 +1931,10 @@ var _hmt = _hmt || [];
- <li class="navlist">
- <a href="/cn/docs23/tutorial/Qlik.html" class="list-group-item-lay pjaxlink ">Qlik Sense éæ</a>
- </li>
-
-
-
-
-
-
-
-
- <ul>
- </div>
-</div>
-
- <li><a href="#title帮å©" data-toggle="collapse" class="navtitle">帮å©</a></li>
- <div class="collapse in">
- <div class="list-group" id="list1">
- <ul>
-
-
-
-
-
-
-
-
-
-
-
+
@@ -1727,21 +1947,12 @@ var _hmt = _hmt || [];
- <li class="navlist">
- <a href="/cn/docs23/howto/howto_backup_metadata.html" class="list-group-item-lay pjaxlink ">å¤ä»½å
æ°æ®</a>
- </li>
-
-
-
-
-
+
-
-
-
+
@@ -1759,7 +1970,7 @@ var _hmt = _hmt || [];
<li class="navlist">
- <a href="/cn/docs23/howto/howto_build_cube_with_restapi.html" class="list-group-item-lay pjaxlink ">ç¨ API æ建 Cube</a>
+ <a href="/cn/docs23/tutorial/cube_streaming.html" class="list-group-item-lay pjaxlink ">ä» Kafka æµæ建 Cube</a>
</li>
@@ -1793,21 +2004,12 @@ var _hmt = _hmt || [];
- <li class="navlist">
- <a href="/cn/docs23/howto/howto_cleanup_storage.html" class="list-group-item-lay pjaxlink ">æ¸
çåå¨</a>
- </li>
-
-
-
-
-
+
-
-
-
+
@@ -1836,21 +2038,12 @@ var _hmt = _hmt || [];
- <li class="navlist">
- <a href="/cn/docs23/howto/howto_jdbc.html" class="list-group-item-lay pjaxlink ">Kylin JDBC Driver</a>
- </li>
-
-
-
-
-
+
-
-
-
+
@@ -1885,196 +2078,2492 @@ var _hmt = _hmt || [];
- <li class="navlist">
- <a href="/cn/docs23/howto/howto_optimize_build.html" class="list-group-item-lay pjaxlink ">ä¼å Cube æ建</a>
- </li>
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/cn/docs23/tutorial/cube_build_performance.html" class="list-group-item-lay pjaxlink ">ä¼å Cube æ建</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/cn/docs23/tutorial/kylin_client_tool.html" class="list-group-item-lay pjaxlink ">Python 客æ·ç«¯</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/cn/docs23/tutorial/setup_systemcube.html" class="list-group-item-lay pjaxlink ">建ç«ç³»ç» Cube</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/cn/docs23/tutorial/use_cube_planner.html" class="list-group-item-lay pjaxlink ">ä½¿ç¨ Cube Planner</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/cn/docs23/tutorial/use_dashboard.html" class="list-group-item-lay pjaxlink ">ä½¿ç¨ Dashboard</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/cn/docs23/tutorial/setup_jdbc_datasource.html" class="list-group-item-lay pjaxlink ">å»ºç« JDBC æ°æ®æº</a>
+ </li>
+
+
+
+
+
+
+
+
+ <ul>
+ </div>
+</div>
+
+ <li><a href="#titleå·¥å
·éæ" data-toggle="collapse" class="navtitle">å·¥å
·éæ</a></li>
+ <div class="collapse in">
+ <div class="list-group" id="list1">
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/cn/docs23/tutorial/odbc.html" class="list-group-item-lay pjaxlink ">ODBC 驱å¨</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/cn/docs23/tutorial/jdbc.html" class="list-group-item-lay pjaxlink ">JDBC 驱å¨</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/cn/docs23/tutorial/tableau.html" class="list-group-item-lay pjaxlink ">Tableau 8</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/cn/docs23/tutorial/tableau_91.html" class="list-group-item-lay pjaxlink ">Tableau 9</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/cn/docs23/tutorial/powerbi.html" class="list-group-item-lay pjaxlink ">Excel å Power BI æç¨</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/cn/docs23/tutorial/squirrel.html" class="list-group-item-lay pjaxlink ">SQuirreL</a>
+ </li>
+
- <ul>
- </div>
-</div>
+
+
+
+
+
+
- </ul>
-</div>
- <div class="col-md-8 col-lg-8 col-xs-12 col-sm-12 aside2">
- <div id="container" class="docs">
- <div id="pjax">
- <h1 class="post-title">ä¼å Cube æ建</h1>
- <article class="post-content" >
- <p>Kylinå°Cubeæ建任å¡å解为å 个ä¾æ¬¡æ§è¡çæ¥éª¤ï¼è¿äºæ¥éª¤å
æ¬Hiveæä½ãMapReduceæä½åå
¶ä»ç±»åçæä½ãå¦æä½ æå¾å¤Cubeæ建任å¡éè¦æ¯å¤©è¿è¡ï¼é£ä¹ä½ è¯å®æ³è¦åå°å
¶ä¸æ¶èçæ¶é´ãä¸ææç
§Cubeæ建æ¥éª¤é¡ºåºæä¾äºä¸äºä¼åç»éªã</p>
-<h2 id="hive">å建Hiveçä¸é´å¹³è¡¨</h2>
-<p>è¿ä¸æ¥å°æ°æ®ä»æºHive表æååºæ¥(åææjoinç表ä¸èµ·)并æå
¥å°ä¸ä¸ªä¸é´å¹³è¡¨ãå¦æCubeæ¯ååºçï¼Kylinä¼å ä¸ä¸ä¸ªæ¶é´æ¡ä»¶ä»¥ç¡®ä¿åªæå¨æ¶é´èå´å
çæ°æ®æä¼è¢«æåãä½ å¯ä»¥å¨è¿ä¸ªæ¥éª¤çlogæ¥çç¸å
³çHiveå½ä»¤ï¼æ¯å¦ï¼</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/cn/docs23/tutorial/Qlik.html" class="list-group-item-lay pjaxlink ">Qlik Sense éæ</a>
+ </li>
+
-<div class="highlighter-rouge"><pre class="highlight"><code>hive -e "USE default;
-DROP TABLE IF EXISTS kylin_intermediate_airline_cube_v3610f668a3cdb437e8373c034430f6c34;
-CREATE EXTERNAL TABLE IF NOT EXISTS kylin_intermediate_airline_cube_v3610f668a3cdb437e8373c034430f6c34
-(AIRLINE_FLIGHTDATE date,AIRLINE_YEAR int,AIRLINE_QUARTER int,...,AIRLINE_ARRDELAYMINUTES int)
-STORED AS SEQUENCEFILE
-LOCATION 'hdfs:///kylin/kylin200instance/kylin-0a8d71e8-df77-495f-b501-03c06f785b6c/kylin_intermediate_airline_cube_v3610f668a3cdb437e8373c034430f6c34';
-SET dfs.replication=2;
-SET hive.exec.compress.output=true;
-SET hive.auto.convert.join.noconditionaltask=true;
-SET hive.auto.convert.join.noconditionaltask.size=100000000;
-SET mapreduce.job.split.metainfo.maxsize=-1;
-INSERT OVERWRITE TABLE kylin_intermediate_airline_cube_v3610f668a3cdb437e8373c034430f6c34 SELECT
-AIRLINE.FLIGHTDATE
-,AIRLINE.YEAR
-,AIRLINE.QUARTER
-,...
-,AIRLINE.ARRDELAYMINUTES
-FROM AIRLINE.AIRLINE as AIRLINE
-WHERE (AIRLINE.FLIGHTDATE >= '1987-10-01' AND AIRLINE.FLIGHTDATE < '2017-01-01');
-</code></pre>
+
+
+ <ul>
+ </div>
</div>
+
+ <li><a href="#title帮å©" data-toggle="collapse" class="navtitle">帮å©</a></li>
+ <div class="collapse in">
+ <div class="list-group" id="list1">
+ <ul>
+
-<p>å¨Hiveå½ä»¤è¿è¡æ¶ï¼Kylinä¼ç¨<code class="highlighter-rouge">conf/kylin_hive_conf.properties</code>éçé
ç½®ï¼æ¯å¦ä¿çæ´å°çåä½å¤ä»½åå¯ç¨Hiveçmapper side joinãéè¦çè¯å¯ä»¥æ ¹æ®é群çå
·ä½æ
åµå¢å å
¶ä»é
ç½®ã</p>
-<p>å¦æcubeçååºå(å¨è¿ä¸ªæ¡ä¾ä¸æ¯âFIGHTDATEâ)ä¸Hive表çååºåç¸åï¼é£ä¹æ ¹æ®å®è¿æ»¤æ°æ®è½è®©Hiveèªæå°è·³è¿ä¸å¹é
çååºãå æ¤å¼ºç建议ç¨Hiveçååºåï¼å¦æå®æ¯æ¥æåï¼ä½ä¸ºcubeçååºåãè¿å¯¹äºé£äºæ°æ®éå¾å¤§ç表æ¥è¯´å ä¹æ¯å¿
é¡»çï¼å¦åHiveä¸å¾ä¸æ¯æ¬¡å¨è¿æ¥æ«æå
¨é¨æ件ï¼æ¶èé常é¿çæ¶é´ã</p>
-<p>å¦æå¯ç¨äºHiveçæ件å并ï¼ä½ å¯ä»¥å¨<code class="highlighter-rouge">conf/kylin_hive_conf.xml</code>éå
³éå®ï¼å 为Kylinæèªå·±å并æ件çæ¹æ³(ä¸ä¸è)ï¼</p>
-<div class="highlighter-rouge"><pre class="highlight"><code><property>
- <name>hive.merge.mapfiles</name>
- <value>false</value>
- <description>Disable Hive's auto merge</description>
-</property>
-</code></pre>
-</div>
-<h2 id="section">éæ°ååä¸é´è¡¨</h2>
+
-<p>å¨ä¹åçä¸æ¥ä¹åï¼Hiveå¨HDFSä¸çç®å½éçæäºæ°æ®æ件ï¼æäºæ¯å¤§æ件ï¼æäºæ¯å°æ件çè³ç©ºæ件ãè¿ç§ä¸å¹³è¡¡çæ件åå¸ä¼å¯¼è´ä¹åçMRä»»å¡åºç°æ°æ®å¾æçé®é¢ï¼æäºmapperå®æå¾å¾å¿«ï¼ä½å
¶ä»çå°±å¾æ
¢ãé对è¿ä¸ªé®é¢ï¼Kylinå¢å äºè¿ä¸ä¸ªæ¥éª¤æ¥âéæ°ååâæ°æ®ï¼è¿æ¯ç¤ºä¾è¾åº:</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/cn/docs23/howto/howto_use_restapi.html" class="list-group-item-lay pjaxlink ">Use RESTful API</a>
+ </li>
+
-<div class="highlighter-rouge"><pre class="highlight"><code>total input rows = 159869711
-expected input rows per mapper = 1000000
-num reducers for RedistributeFlatHiveTableStep = 160
-</code></pre>
-</div>
-<p>éæ°åå表çå½ä»¤ï¼</p>
+
-<div class="highlighter-rouge"><pre class="highlight"><code>hive -e "USE default;
-SET dfs.replication=2;
-SET hive.exec.compress.output=true;
-SET hive.auto.convert.join.noconditionaltask=true;
-SET hive.auto.convert.join.noconditionaltask.size=100000000;
-SET mapreduce.job.split.metainfo.maxsize=-1;
-set mapreduce.job.reduces=160;
-set hive.merge.mapredfiles=false;
+
+
+
-INSERT OVERWRITE TABLE kylin_intermediate_airline_cube_v3610f668a3cdb437e8373c034430f6c34 SELECT * FROM kylin_intermediate_airline_cube_v3610f668a3cdb437e8373c034430f6c34 DISTRIBUTE BY RAND();
-"
-</code></pre>
-</div>
-<p>é¦å
ï¼Kylin计ç®åºä¸é´è¡¨çè¡æ°ï¼ç¶ååºäºè¡æ°ç大å°ç®åºéæ°ååæ°æ®éè¦çæ件æ°ãé»è®¤æ
åµä¸,Kylin为æ¯ä¸ç¾ä¸è¡åé
ä¸ä¸ªæ件ãå¨è¿ä¸ªä¾åä¸ï¼æ1.6亿è¡å160个reducerï¼æ¯ä¸ªreducerä¼åä¸ä¸ªæ件ãå¨æ¥ä¸æ¥å¯¹è¿å¼ 表è¿è¡çMRæ¥éª¤éï¼Hadoopä¼å¯å¨åæ件ç¸åæ°éçmapperæ¥å¤çæ°æ®(é常ä¸ç¾ä¸è¡æ°æ®æ¯ä¸ä¸ªHDFSæ°æ®åè¦å°)ãå¦æä½ çæ¥å¸¸æ°æ®é没æè¿ä¹å¤§æè
Hadoopé群æ足å¤çèµæºï¼ä½ æ许æ³è¦æ´�
�¤ç并åæ°ï¼è¿æ¶å¯ä»¥å°<code class="highlighter-rouge">conf/kylin.properties</code>éç<code class="highlighter-rouge">kylin.job.mapreduce.mapper.input.rows</code>设为å°ä¸ç¹çæ°å¼ï¼æ¯å¦:</p>
-<p><code class="highlighter-rouge">kylin.job.mapreduce.mapper.input.rows=500000</code></p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/cn/docs23/howto/howto_build_cube_with_restapi.html" class="list-group-item-lay pjaxlink ">ç¨ API æ建 Cube</a>
+ </li>
+
-<p>å
¶æ¬¡ï¼Kylinä¼è¿è¡ <em>âINSERT OVERWRITE TABLE ⦠DISTRIBUTE BY â</em> å½¢å¼çHiveQLæ¥ååæ°æ®å°æå®æ°éçreducerä¸ã</p>
-<p>å¨å¾å¤æ
åµä¸ï¼Kylin请æ±Hiveéæºååæ°æ®å°reducerï¼ç¶åå¾å°å¤§å°ç¸è¿çæ件ï¼ååçè¯å¥æ¯âDISTRIBUTE BY RAND()âã</p>
-<p>å¦æä½ çcubeæå®äºä¸ä¸ªé«åºæ°çåï¼æ¯å¦âUSER_IDâï¼ä½ä¸ºâåçâ维度(å¨cubeçâé«çº§è®¾ç½®â页é¢)ï¼Kylinä¼è®©Hiveæ ¹æ®è¯¥åçå¼éæ°ååæ°æ®ï¼é£ä¹å¨è¯¥åæçç¸åå¼çè¡å°è¢«ååå°åä¸ä¸ªæ件ãè¿æ¯éæºè¦ååè¦å¥½å¾å¤ï¼å 为ä¸ä»
éæ°åå¸äºæ°æ®ï¼å¹¶ä¸å¨æ²¡æé¢å¤ä»£ä»·çæ
åµä¸å¯¹æ°æ®è¿è¡äºé¢å
åç±»ï¼å¦æ¤ä¸æ¥æ¥ä¸æ¥çcube buildå¤çä¼ä»ä¸åçãå¨å
¸åçåºæ¯ä¸ï¼è¿æ ·ä¼åå¯ä»¥åå°40%çbuildæ
¶é¿ãå¨è¿ä¸ªæ¡ä¾ä¸ååçè¯å¥æ¯âDISTRIBUTE BY USER_IDâï¼</p>
+
-<p>请注æ: 1)âåçâååºè¯¥æ¯é«åºæ°ç维度åï¼å¹¶ä¸å®ä¼åºç°å¨å¾å¤çcuboidä¸ï¼ä¸åªæ¯åºç°å¨å°æ°çcuboidï¼ã 使ç¨å®æ¥åçè¿è¡ååå¯ä»¥å¨æ¯ä¸ªæ¶é´èå´å
çæ°æ®åååå¸ï¼å¦åä¼é ææ°æ®å¾æï¼ä»èéä½buildæçãå
¸åçæ£é¢ä¾åæ¯ï¼âUSER_IDâãâSELLER_IDâãâPRODUCTâãâCELL_NUMBERâççï¼è¿äºåçåºæ°åºè¯¥å¤§äºä¸å(è¿å¤§äºreducerçæ°é)ã 2)âåçâ对cubeçåå¨åæ ·æ好å¤ï¼ä¸è¿è¿è¶
åºäºæ¬æçèå
´ã</p>
+
+
+
-<h2 id="section-1">æåäºå®è¡¨çå¯ä¸å</h2>
-<p>å¨è¿ä¸æ¥éª¤Kylinè¿è¡MRä»»å¡æ¥æå使ç¨åå
¸ç¼ç ç维度åçå¯ä¸å¼ã</p>
-<p>å®é
ä¸è¿æ¥å¦å¤è¿åäºä¸äºäºæ
ï¼éè¿HyperLogLog计æ°å¨æ¶écubeçç»è®¡æ°æ®ï¼ç¨äºä¼°ç®æ¯ä¸ªcuboidçè¡æ°ãå¦æä½ åç°mapperè¿è¡å¾å¾æ
¢ï¼è¿é常表æcubeç设计太è¿å¤æï¼è¯·åè<br />
-<a href="howto_optimize_cubes.html">ä¼åcube设计</a>æ¥ç®åcubeãå¦æreduceråºç°äºå
å溢åºé误ï¼è¿è¡¨æcuboidç»åçç太å¤äºæè
æ¯YARNçå
ååé
满足ä¸äºéè¦ãå¦æè¿ä¸æ¥ä»ä»»ä½æä¹ä¸è®²ä¸è½å¨åççæ¶é´å
å®æï¼ä½ å¯ä»¥æ¾å¼ä»»å¡å¹¶èèéæ°è®¾è®¡cubeï¼å 为继ç»ä¸å»ä¼è±è´¹æ´é¿çæ¶é´ã</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/cn/docs23/howto/howto_optimize_cubes.html" class="list-group-item-lay pjaxlink ">ä¼å Cube 设计</a>
+ </li>
+
-<p>ä½ å¯ä»¥éè¿éä½åæ ·çæ¯ä¾ï¼kylin.job.cubing.inmen.sampling.percentï¼æ¥å éè¿ä¸ªæ¥éª¤ï¼ä½æ¯å¸®å©å¯è½ä¸å¤§èä¸å½±åäºcubeç»è®¡æ°æ®çåç¡®æ§ï¼æææ们并ä¸æ¨èã</p>
-<h2 id="section-2">æ建维度åå
¸</h2>
-<p>æäºåä¸æ¥æåç维度åå¯ä¸å¼ï¼Kylinä¼å¨å
åéæ建åå
¸ï¼å¨ä¸ä¸ªçæ¬å°æ¹ä¸ºMapReduceä»»å¡ï¼ãé常è¿ä¸æ¥æ¯è¾å¿«ï¼ä½å¦æå¯ä¸å¼éåå¾å¤§ï¼Kylinå¯è½ä¼æ¥åºç±»ä¼¼âåå
¸ä¸æ¯æè¿é«åºæ°âã对äºUHCç±»åçåï¼è¯·ä½¿ç¨å
¶ä»ç¼ç æ¹å¼ï¼æ¯å¦âfixed_lengthâãâintegerâççã</p>
+
-<h2 id="cuboid-htable">ä¿åcuboidçç»è®¡æ°æ®åå建 HTable</h2>
+
+
+
-<p>è¿ä¸¤æ¥æ¯è½»é级åå¿«éçã</p>
-<h2 id="cuboid">æ建åºç¡cuboid</h2>
-<p>è¿ä¸æ¥ç¨Hiveçä¸é´è¡¨æ建åºç¡çcuboidï¼æ¯âéå±âæ建cubeç®æ³ç第ä¸è½®MR计ç®ãMapperçæ°ç®ä¸ç¬¬äºæ¥çreduceræ°ç®ç¸çï¼Reducerçæ°ç®æ¯æ ¹æ®cubeç»è®¡æ°æ®ä¼°ç®çï¼é»è®¤æ
åµä¸æ¯500MBè¾åºä½¿ç¨ä¸ä¸ªreducerï¼å¦æè§å¯å°reducerçæ°éè¾å°ï¼ä½ å¯ä»¥å°kylin.propertieséçâkylin.job.mapreduce.default.reduce.input.mbâ设为å°ä¸ç¹çæ°å¼ä»¥è·å¾è¿å¤çèµæºï¼æ¯å¦:</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/cn/docs23/howto/howto_optimize_build.html" class="list-group-item-lay pjaxlink ">ä¼å Cube æ建</a>
+ </li>
+
-<p><code class="highlighter-rouge">kylin.job.mapreduce.default.reduce.input.mb=200</code></p>
-<h2 id="build-n-dimension-cuboid">Build N-Dimension Cuboid</h2>
-<p>## æ建Nç»´cuboid</p>
-<p>è¿äºæ¥éª¤æ¯âéå±âæ建cubeçè¿ç¨ï¼æ¯ä¸æ¥ä»¥åä¸æ¥çè¾åºä½ä¸ºè¾å
¥ï¼ç¶åå»æä¸ä¸ªç»´åº¦ä»¥èåå¾å°ä¸ä¸ªåcuboidã举个ä¾åï¼cuboid ABCDå»æAå¾å°BCDï¼å»æBå¾å°ACDã</p>
+
-<p>æäºcuboidå¯ä»¥ä»ä¸ä¸ªä»¥ä¸çç¶cuboidèåå¾å°ï¼è¿ç§æ
åµä¸ï¼Kylinä¼éæ©æå°çä¸ä¸ªç¶cuboidã举ä¾,ABå¯ä»¥ä»ABC(id:1110)åABD(id:1101)çæï¼åABDä¼è¢«éä¸ï¼å 为å®çæ¯ABCè¦å°ãå¨è¿åºç¡ä¸ï¼å¦æDçåºæ°è¾å°ï¼èåè¿ç®çææ¬å°±ä¼æ¯è¾ä½ãæ以ï¼å½è®¾è®¡rowkeyåºåçæ¶åï¼è¯·è®°å¾å°åºæ°è¾å°ç维度æ¾å¨æ«å°¾ãè¿æ ·ä¸ä»
æå©äºcubeæ建ï¼èä¸æå©äºcubeæ¥è¯¢ï¼å 为é¢èåä¹éµå¾ªç¸åçè§åã</p>
+
+
+
-<p>é常æ¥è¯´ï¼ä»Nç»´å°(N/2)ç»´çæ建æ¯è¾æ
¢ï¼å 为è¿æ¯cuboidæ°éçç¸æ§å¢é¿çé¶æ®µï¼Nç»´æ1个cuboidï¼(N-1)ç»´æN个cuboidï¼(N-2)ç»´æN*(N-1)个cuboidï¼ä»¥æ¤ç±»æ¨ãç»è¿(N/2)ç»´æ建çæ¥éª¤ï¼æ´ä¸ªæ建任å¡ä¼éæ¸åå¿«ã</p>
-<h2 id="cube">æ建cube</h2>
-<p>è¿ä¸ªæ¥éª¤ä½¿ç¨ä¸ä¸ªæ°çç®æ³æ¥æ建cubeï¼âéçâæ建ï¼ä¹ç§°ä¸ºâå
åâæ建ï¼ãå®ä¼ä½¿ç¨ä¸è½®MRæ¥è®¡ç®ææçcuboidsï¼ä½æ¯æ¯é常æ
åµä¸æ´èå
åãé
ç½®æ件âconf/kylin_job_inmem.xmlâæ£æ¯ä¸ºè¿æ¥è设ãé»è®¤æ
åµä¸å®ä¸ºæ¯ä¸ªmapperç³è¯·3GBå
åãå¦æä½ çé群æå
足çå
åï¼ä½ å¯ä»¥å¨ä¸è¿°é
ç½®æ件ä¸åé
æ´å¤å
åç»mapperï¼è¿æ ·å®ä¼ç¨å°½å¯è½å¤çå
åæ¥ç¼åæ°æ®ä»¥è·å¾æ´å¥½çæ§è½ï¼æ¯å¦ï¼</p>
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/cn/docs23/howto/howto_backup_metadata.html" class="list-group-item-lay pjaxlink ">å¤ä»½å
æ°æ®</a>
+ </li>
+
-<div class="highlighter-rouge"><pre class="highlight"><code><property>
- <name>mapreduce.map.memory.mb</name>
- <value>6144</value>
- <description></description>
-</property>
-<property>
- <name>mapreduce.map.java.opts</name>
- <value>-Xmx5632m</value>
- <description></description>
-</property>
-</code></pre>
-</div>
-<p>请注æï¼Kylinä¼æ ¹æ®æ°æ®åå¸ï¼ä»cubeçç»è®¡æ°æ®éè·å¾ï¼èªå¨éæ©æä¼çç®æ³ï¼æ²¡æ被éä¸çç®æ³å¯¹åºçæ¥éª¤ä¼è¢«è·³è¿ãä½ ä¸éè¦æ¾å¼å°éæ©æ建ç®æ³ã</p>
+
-<h2 id="cuboidhfile">å°cuboidæ°æ®è½¬æ¢ä¸ºHFile</h2>
+
+
+
-<p>è¿ä¸æ¥å¯å¨ä¸ä¸ªMRä»»å¡æ¥è®²cuboidæ件ï¼åºåæä»¶æ ¼å¼ï¼è½¬æ¢ä¸ºHBaseçHFileæ ¼å¼ãKylinéè¿cubeç»è®¡æ°æ®è®¡ç®HBaseçregionæ°ç®ï¼é»è®¤æ
åµä¸æ¯5GBæ°æ®å¯¹åºä¸ä¸ªregionãRegionè¶å¤ï¼MR使ç¨çreducerä¹ä¼è¶å¤ãå¦æä½ è§å¯å°reduceræ°ç®è¾å°ä¸æ§è½è¾å·®ï¼ä½ å¯ä»¥å°âconf/kylin.propertiesâéç以ä¸åæ°è®¾å°ä¸ç¹ï¼æ¯å¦ï¼</p>
-<div class="highlighter-rouge"><pre class="highlight"><code>kylin.hbase.region.cut=2
-kylin.hbase.hfile.size.gb=1
-</code></pre>
-</div>
-<p>å¦æä½ ä¸ç¡®å®ä¸ä¸ªregionåºè¯¥æ¯å¤å¤§æ¶ï¼èç³»ä½ çHBase管çåã</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="navlist">
+ <a href="/cn/docs23/howto/howto_cleanup_storage.html" class="list-group-item-lay pjaxlink ">æ¸
çåå¨</a>
+ </li>
+
-<h2 id="hfilehbase">å°HFile导å
¥HBase表</h2>
-<p>è¿ä¸æ¥ä½¿ç¨HBase APIæ¥è®²HFile导å
¥region serverï¼è¿æ¯è½»é级并快éçä¸æ¥ã</p>
-<h2 id="cube-1">æ´æ°cubeä¿¡æ¯</h2>
-<p>å¨å¯¼å
¥æ°æ®å°HBaseåï¼Kylinå¨å
æ°æ®ä¸å°å¯¹åºçcube segmentæ 记为readyã</p>
-<h2 id="section-3">æ¸
çèµæº</h2>
-<p>å°ä¸é´å®½è¡¨ä»Hiveå é¤ãè¿ä¸æ¥ä¸ä¼é»å¡ä»»ä½æä½ï¼å 为å¨åä¸æ¥segmentå·²ç»è¢«æ 记为readyãå¦æè¿ä¸æ¥åçé误ï¼ä¸ç¨æ
å¿ï¼åå¾åæ¶å·¥ä½å¯ä»¥æäºåéè¿Kylinç<a href="howto_cleanup_storage.html">StorageCleanupJob</a>å®æã</p>
-<h2 id="section-4">æ»ç»</h2>
-<p>è¿æé常å¤å
¶ä»æé«Kylinæ§è½çæ¹æ³ï¼å¦æä½ æç»éªå¯ä»¥å享ï¼æ¬¢è¿éè¿<a href="mailto:dev@kylin.apache.org">dev@kylin.apache.org</a>讨论ã</p>
+ <ul>
+ </div>
+</div>
+
- </article>
- </div>
- </div>
- </div>
+ </ul>
+</div>
</div>
</div>
<!--