Dictionary will be loaded into Kylin's memory, so based on your JVM heap
configuration, the dictionary couldn't be very big.

Usually, the dictionary can only support dimension whose cardinality is
less than 5 million (smaller is better). For larger cardinality, please use
"fixed_length" encoding or "integer" encoding (if the column is in int
format).

Best regards,

Shaofeng Shi 史少锋
Apache Kylin PMC
Email: [email protected]

Apache Kylin FAQ: https://kylin.apache.org/docs/gettingstarted/faq.html
Join Kylin user mail group: [email protected]
Join Kylin dev mail group: [email protected]




maoxiaomao <[email protected]> 于2019年8月29日周四 下午3:02写道:

> Hi,
>    I building a MERGE job, and it got the following error when Step1.
> Merge Dictionary. I merge 3 segment ,and my dict file size is 185.7M*3
> (557M),it's really larger than normal.
> I wonder:
>    Is there any size limit for dictionary?
>    How can I make it's size smaller?
> env:
>    Kylin 2.6.1
>
> Error: java.lang.OutOfMemoryError: Java heap space
> at org.apache.kylin.dict.TrieDictionary.readFields(TrieDictionary.java:341)
> at
> org.apache.kylin.dict.TrieDictionaryForest.readFields(TrieDictionaryForest.java:234)
> at
> org.apache.kylin.dict.DictionaryInfoSerializer.deserialize(DictionaryInfoSerializer.java:80)
> at
> org.apache.kylin.dict.DictionaryInfoSerializer.deserialize(DictionaryInfoSerializer.java:35)
> at
> org.apache.kylin.common.persistence.ContentReader.readContent(ContentReader.java:40)
> at
> org.apache.kylin.common.persistence.ResourceStore.getResource(ResourceStore.java:269)
> at
> org.apache.kylin.common.persistence.ResourceStore.getResource(ResourceStore.java:256)
> at
> org.apache.kylin.dict.DictionaryManager.load(DictionaryManager.java:397)
> at
> org.apache.kylin.dict.DictionaryManager$1.load(DictionaryManager.java:80)
> at
> org.apache.kylin.dict.DictionaryManager$1.load(DictionaryManager.java:77)
> at
> com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3599)
> at
> com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2379)
> at
> com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2342)
> at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2257)
> at com.google.common.cache.LocalCache.get(LocalCache.java:4000)
> at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4004)
> at
> com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4874)
> at
> org.apache.kylin.dict.DictionaryManager.getDictionaryInfo(DictionaryManager.java:101)
> at
> org.apache.kylin.engine.mr.steps.MergeDictionaryMapper.doMap(MergeDictionaryMapper.java:103)
> at
> org.apache.kylin.engine.mr.steps.MergeDictionaryMapper.doMap(MergeDictionaryMapper.java:66)
> at org.apache.kylin.engine.mr.KylinMapper.map(KylinMapper.java:77)
> at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:146)
> at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:799)
> at org.apache.hadoop.mapred.MapTask.run(MapTask.java:347)
> at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:174)
> at java.security.AccessController.doPrivileged(Native Method)
> at javax.security.auth.Subject.doAs(Subject.java:422)
> at
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1685)
> at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:168)
>
>
>
>
>
> --
> [image: 点击参加抽奖]
> <http://pepsi2009.163.com/validsign.php?valide=0ba9e7477bf1486aad82350cf9504362&[email protected]>
>
>
>
>

Reply via email to