前言

今天让架构建模群的大佬代个班~~~

以下为研讨实录,请查收:

ES 搜索调优

提问:

请问各位大佬,我们项目准备搭建一个类似电商的平台,搜索是直接用的es,但是搜索效果很差,我们就只有一个后台开发,靠人工慢慢调优不太现实…想问下业界有没有什么成熟的解决方案或者开源项目可以较少的改动就能用的呢?就直接调es的分词参数,用or出来太多不相关的内容,用and就只有几条匹配结果(一共十万多的数据)。

讨论:

可以考虑换个分词器,或者加个自己的词典来优化下效果。

其实要求不高的话,一般情况下全文检索问题不大,召回多没啥事,rank别离谱就行

也可以搜搜别人维护的词库

上面是个淘宝店的健康类的词库,你要不试试也去搜搜

再不行,就得自己造一份了。找专业电子书,然后用词汇发现算法跑一遍,然后安排人工过一遍。

调优

提问:

我想问下spark或者hive 平时调优,有什么好办法

除了SQL规范,处理数据倾斜,合并小文件,配置参数

讨论:

列裁剪和分区裁剪

谓词下推

group by代替distinct. group by配置调整 (map端预聚合,倾斜均衡配置项)

join基础优化(build table(小表)前置,多表join时key相同,利用map join特性,分桶表map join,倾斜均衡配置项)

优化SQL处理join数据倾斜(空值或无意义值,单独处理倾斜key,不同数据类型,build table过大)

MapReduce优化(调整mapper数,调整reducer数,合并小文件,启用压缩,JVM重用)

并行执行与本地模式

严格模式/非严格模式

采用合适的存储格式

所谓严格模式,就是强制不允许用户执行3种有风险的HiveQL语句,一旦执行会直接失败。这3种语句是:

查询分区表时不限定分区列的语句;

两表join产生了笛卡尔积的语句;

用order by来排序但没有指定limit的语句。

要开启严格模式,需要将参数hive.mapred.mode设为strict。

主题表命名

提问:

问一个很low的问题   主题划分是怎么确定的  tablename 么

回答:
dws_{业务板块缩写/pub}_{数据域缩写}_{数据粒度缩写}[_{自定义表命名标签缩写}]_{统计时间周期范围缩写}

结语

加油,数字人,今天又是美好的一天

推荐阅读:

大数据架构建模群大咖研讨实录-20210406

产品架构群大咖研讨实录-20210426

大数据架构建模群大咖研讨实录-20210426

大数据架构建模群大咖研讨实录-20210427

实战派:大数据架构师现场答疑实录20210429

 

更多精彩: