是以,这种需求我们须要手动应用Global Dictionary,顾名思义,它是一个全局的字典,不分Segments,同一个user_id,在全局字典中只有一个ID。
在状况为DISABLED的Cube列表中,点击”Admins”菜单下的”Edit(JSON)”,进入Cube JSON描述的编辑页面,
添加下面的JSON
个中,在override_kylin_properties 中增长了两个Cube的设备参数,用于增长Mapper的运行内存。
- "dictionaries": [
- {
- "column": "USER_ID",
- "builder": "org.apache.kylin.dict.GlobalDictionaryBuilder"
- }
- ]
定义了对USER_ID字段应用全局字典。
之后,保存JSON。
Build与萌芽
Build完成后,在Hive和Kylin中履行下面的萌芽:
SELECT city_code,SUM(bid_request) AS bid_request,COUNT(DISTINCT user_id) AS uvFROM liuxiaowen.TEST_T_PBS_UV_FACTGROUP BY city_codeORDER BY uv DESC limit 30;
Hive中耗时:181.134 seconds
Kylin中耗时:9 seconds
萌芽结不雅完全一致:
Global Dictionary存在问题
因为Global Dictionary 底层基于bitmap,其最安闲量为Integer.MAX_VALUE,即21亿多,如不雅全局字典中,累计值跨越Integer.MAX_VALUE,那么在Build时刻便会报错。
是以,应用全局字的┞氛样有容量的限制。
【编辑推荐】
- R说话进阶之2:文本(字符串)处理与正则表达式
- Apache Kylin宣布新版流处理引擎
- 美团Apache Kylin精确去重指标优化过程
- Apache Kylin优化–高等设置:聚合组(Aggregation Group)原懂得析
- Apache Kylin优化之—Cube的高等设置
今朝Kylin的UI中没有可以直接设备Global Dictionary的处所,须要手动修改Cube的JSON描述:
推荐阅读
说来我正式接触数据分析也快一年,对速成照样有一些心得。优良的数据分析师是不克不及速成的,然则零经验也有零经验的捷径。这两个搞定,根本10万条以内的数据统计没啥难度,80%的办公室白>>>详细阅读
本文标题:Apache Kylin中对上亿字符串的精确Count_Distinct示例
地址:http://www.17bianji.com/lsqh/35154.html
1/2 1