ShengJun Zheng created KYLIN-5011:
-------------------------------------

             Summary: Detect and scatter skewed data in dict encoding step
                 Key: KYLIN-5011
                 URL: https://issues.apache.org/jira/browse/KYLIN-5011
             Project: Kylin
          Issue Type: New Feature
          Components: Job Engine
    Affects Versions: v4.0.0-beta
            Reporter: ShengJun Zheng
            Assignee: ShengJun Zheng
             Fix For: v4.0.0
         Attachments: image-2021-06-15-10-54-19-419.png

In KYLIN4, dictionaries are hashed into several buckets, column data are 
repartitioned to the same partition size as bucket size. Then, each encoding 
task is able to load a piece of  dictionary bucket to accelerate the encoding 
step. 

Recently we are troubled by this improvement when data skew happens. In some of 
our cases, the repartition step during encoding is even impossible to finish . 
Whereas this works fine in KYLIN3, for each Spark task will load all dictionary 
of a column and encode column values to int values. There is no need to do 
repartition step in KYLIN3.

We solve this by:
 # sample from source data and detect skewed data
 # build skewed data's dictionary
 # customize an repartition function to scatter skewed data to random partitions
 # do encoding with both skewed dictionary and dictionary loaded within each 
partition

After this improvement, some of our cube's build time reduced from 190min to 
30min

!image-2021-06-15-10-54-19-419.png!



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to