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)