当前位置:  开发笔记 > 数据库 > 正文

Spark,优化DF的度量生成

如何解决《Spark,优化DF的度量生成》经验,为你挑选了0个好方法。

这是一个优化问题,这是我目前的(工作)情况:

Spark使用spark-jobserver以独立模式运行;

我有一个镶木地板文件,其中约有3M行作为一张表缓存在内存中;

该表是来自电子商务网站的所有数据的综合表,每行代表一个用户,但用户可以拥有更多行;

客户端请求是执行SQL查询,并将结果显示在某些表的网页上,每个表都代表一个带计数器的指标,如:

年龄=> 18-20:15位用户,21-35位:42位用户,......

国家=>美国:22个用户,GB:0个用户,......

等等.计算所有表(以及一些关于用户会话,基于活动,期间和年份生成的会话),我们目前有约200个指标.

生产中最后发布的系统使用(将df视为SQL查询产生的DataFrame):

df.rdd.aggregate(metricsMap) (

      (acc: MetricsMap, r:Row) => {
        acc.analyzeRow(r)
        acc
      },

      (acc1: MetricsMap, acc2: MetricsMap) => {
        acc1.merge(acc2)
        acc1
      }
    ) 

其中MetricsMap是用于提取和从行聚合数据的对象.

此操作非常占用CPU,并且在服务器上从没有参数的查询中提取数据需要大约20秒(因此来自镶木地板文件中的所有数据).

我决定使用聚合,因为对于他们的统计分析,他们想要多个预期:一些指标应该由用户密钥计数,另一个指标用户名(对于网站......)和另一个按产品密钥计算.使用这种方法我只需要循环一次结果,但我不知道这是否是更好的方法......

这是更好的方法,还是存在一些其他(更快)的方法来获得相同的结果?

关于预先计算度量的问题,他们可以对数据集进行的查询没有约束,所以我不知道这是否可能......你能举个例子吗?

回答一些问题

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有