加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

美团R语言数据运营实战

发布时间:2018-08-16 08:41:19 所属栏目:教程 来源:喻灿
导读:技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战 一、引言 近年来,随着分布式数据处理技术的不断革新,Hive、Spark、Kylin、Impala、Presto 等工具不断推陈出新,对大数据集合的计算和存储成为现实,数据仓库/商业分析部门日益成

RStudio 通过 rmarkdown + knitr 的方式提供了一套基于文学编程的数据分析报告产出方案,开发者可以将 R 代码嵌入 Markdown 文档中执行并得到渲染结果(渲染结果可以是 HTML、PDF、Word 文档格式),实际数据分析过程中,开发者最终能形成一套数据分析模版,每次适配不同的数据,就能产出一份新的数据分析报告。

rmarkdown 本身具备简单的页面布局能力并可以使用 flexdashboard 进行扩展,因此这套方案不仅能实现重复性分析过程,还能实现分析结果的高度定制化展示,可以使用 HTML、CSS、JavaScript 前端三大件对数据分析报告进行展示和交互的细节调整。最终实现人力的节省和数据分析结果的快速、高效产出。

四、R 服务化改造

4.1 R 服务化框架

R 本身既是一门语言、也是一个跨平台的操作环境,具备强大的数据处理、数据分析、和数据可视化能力。除了在个人电脑的 Windows/MacOS 环境中上充当个人统计分析工具外,也可以运行在 Linux 服务环境中,因此可以将 R 作为分析展现引擎,外围通过 Java 等系统开发语言完成缓存、安全检查、权限控制等功能,开发企业报表系统或数据分析(挖掘)框架,而不仅仅只是将 R 作为一个桌面软件。

企业报表系统或数据分析(挖掘)框架设计方案如下图所示:

美团R语言数据运营实战

图二 R 服务化框架

4.2 foreach + doParallel 多核并行方案

作为一门统计学家开发的解释性语言,R 运行的是 CPU 单核上的单线程程序、并且需要将全部数据加载到内存进行处理,因此和 Java、Python 等系统语言相比,计算性能是 R 的软肋。对于大数据集合的计算场景,需要尽量将数据计算部分通过 Hive、Kylin 等分布式计算引擎完成,尽量让 R 只处理结果数据集;另外也可以通过 doParallel + foreach 方案,通过多核并行提升计算效率,代码示例如下:

  1. library(doParallel) 
  2. library(foreach) 
  3. registerDoParallel(cores = detectCores()) 
  4.  
  5. vis_process1  <- function() { 
  6.     # 可视化过程1 ... 
  7. vis_process2  <- function() { 
  8.     # 可视化过程2 ... 
  9. data_process1 <- function() { 
  10.     # 数据处理过程1 ... 
  11. data_process2 <- function() { 
  12.     # 数据处理过程2 ... 
  13.  
  14. processes <- c('vis_process1', 'vis_process2', 'data_process1', 'data_process2') 
  15. process_res <- foreach(i = 1:length(process), .packages = c('magrittr')) %dopar% { 
  16.     do.call(processes[i], list()) 
  17.  
  18. vis_process1_res  <- process_res[[1]] 
  19. vis_process2_res  <- process_res[[2]] 
  20. data_process1_res <- process_res[[3]] 
  21. data_process2_res <- process_res[[4]] 

4.3 图形化数据报告渲染性能

在数据分析过程中,R 最重要的是充当图形引擎的角色,因此有必要了解其图形渲染性能。针对主流的基于 rmarkdown + flexdashboard 的数据分析报告渲染方案,其性能测试结果如下:

系统环境:

  • 4 核 CPU,8 G 内存,2.20GHz 主频。
  • Linux version 3.10.0-123.el7.x86_64。

测试方法:

测试在不同并发度下、不同复杂度的渲染模式下,重复渲染 100 次的耗时。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读