已知条件不充分,描述不严谨,感觉有点没理解;这种问题很有可能就是坑,不要着急回答,盲目回答会让对方觉得你不专业,应该听清问题之后追问对方一些必要条件。
举例说明:一亿数据量并不一定就非常大,向对方确认一亿的单位是啥,如果是条数的话再确定一下有几个字段,每个字段的类型以及占用多大的存储空间;如果这份数据有十个字段且每个字段占用十个字节,一条数据占用一百个字节一亿条数据占用十个G数据量可以接受;其次数据的形态是咋样的?是文本文件还是存储在一张数据库表里面此外这些数据是一次性给的还是可以分批次的方式或者流的形式慢慢接过来。第三确认场景能提供的分析手段有哪些?只能用普通的SQL还是可以用分布式的计算引擎,为什么要去优化,是原来的分析效率太低还是硬件资源不够,确认问题之后才能对症下药解决问题。
第一种情况假如数据存储在数据库中分析的慢可能是SQL语句写的过于复杂或者表没有创建合理的索引,可以优化表的索引然后利用索引优化SQL语句来加速分析的效率。
第二种情况利用分治的思想,可能是硬件资源不够计算的数据太多,取常用的字段进行分区,比如添加日期分区每次只分析一个特定的日期数据先得到一个中间结果然后对这些中间结果再次聚合分析得到最终的结果,
第三种架构设计上的优化,利用流式技术将批处理改造成实时流计算,尤其是计算资源受限的情况下将原本并不复杂的分析场景从基于一段时间数据的分析优化为微批次的准实时分析,在借用一些数据库的物化视图功能将微批的处理结果最终汇总到一张结果表来解决单次大数据量分析的效率优化。
212

被折叠的 条评论
为什么被折叠?



