成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

美團R語言數據運營實戰

開發 前端 大數據
本文將基于美團到店餐飲技術部的精細化數據運營實踐,介紹R在數據分析與可視化方面的工程能力,希望能夠拋磚引玉,也歡迎業界同行給我們提供更多的建議。

一、引言

近年來,隨著分布式數據處理技術的不斷革新,Hive、Spark、Kylin、Impala、Presto 等工具不斷推陳出新,對大數據集合的計算和存儲成為現實,數據倉庫/商業分析部門日益成為各類企業和機構的標配。在這種背景下,是否能探索和挖掘數據價值,具備精細化數據運營的能力,就成為判定一個數據團隊成功與否的關鍵。

在數據從后臺走向前臺的過程中,數據展示是最后一步關鍵環節。與冰冷的表格展示相比,將數據轉化成圖表并進行適當的內容組織,往往能更快速、更直觀的傳遞信息,進而更好的提供決策支持。從結構化數據到最終的展示,需要通過一系列的探索和分析過程去完成產品思路的沉淀,這個過程也伴隨著大量的數據二次處理。

上述這些場合 R 語言有著獨特的優勢。本文將基于美團到店餐飲技術部的精細化數據運營實踐,介紹 R 在數據分析與可視化方面的工程能力,希望能夠拋磚引玉,也歡迎業界同行給我們提供更多的建議。

二、數據運營產品分類與 R 的優勢

2.1 數據運營產品分類

在企業數據運營過程中,考慮使用場景、產品特點、實施角色以及可利用的工具,大致可以將數據運營需求分為四類,如下表所示:

 

美團R語言數據運營實戰

2.2 R 在數據運營上的優勢

如上節所述,在精細化數據運營過程中,經常需要使用高度定制的數據處理、可視化、分析等手段,這些過程 Excel、Tableau、企業級報表工具都無法面面俱到,而恰好是 R 的強項。一般來說,R 具備的如下特征,讓其有了“數據分析領域的瑞士軍刀”的名號:

  • 免費、開源、可擴展:截至到 2018-08-02,“ The CRAN package repository features 12858 available packages. ”,CRAN 上的軟件包涉及貝葉斯分析、運籌學、金融、基因分析、遺傳學等方方面面,并在持續新增和迭代。
  • 可編程:R 本身是一門解釋型語言,可以通過代碼控制執行過程,并能通過 rPython、rJava 等軟件包實現和 Python、Java 語言的互相調用。

強大的數據操控能力:

  • 數據源接入:通過 RMySQL、SparkR、elastic 等軟件包,可以實現從 MySQL、Spark、Elasticsearch 等外部數據引擎獲取數據。
  • 數據處理:內置 vector、list、matrix、data.frame 等數據結構,并能通過 sqldf、tidyr、dplyr、reshape2 等軟件包實現對數據的二次加工。
  • 數據可視化:ggplot2、plotly、dygraph 等可視化包可以實現高度定制化的圖表渲染。
  • 數據分析與挖掘:R 本身是一門由統計學家發起的面向統計分析的語言,通過自行編程實現或者第三方軟件包調用,可以輕松實現線性回歸、方差分析、主成分分析等分析與挖掘功能。

初具雛形的服務框架:

  • Web 編程框架:例如不精通前端和系統開發的同學,通過 shiny 軟件包開發自己的數據應用。
  • 服務化能力:例如通過 rserve 包,可以實現 R 和其他語言通信的 C/S 架構服務。

對于以數據為中心的應用來說,Python 和 R 都是不錯的選擇,兩門語言在發展過程中也互有借鑒。“越接近統計研究與數據分析,越傾向 R;越接近工程開發工程環境的人,越傾向 Python”,Python 是一個全能型“運動員”,R 則更像是一個統計分析領域的“劍客”,“Python 并未建立起一個能與 CRAN 媲美的巨大的代碼庫,R 在這方面具有絕對領先優勢。統計學并不是 Python 的核心使命”。各技術網站上有大量“Python VS R ”的討論,感興趣的讀者可以自行了解和作出選擇。

三、R 的數據處理、可視化、可重復性數據分析能力

對于具備編程能力的分析師或者具備分析能力的開發人員來說,在進行一系列長期的數據分析工程時,使用 R 既可以滿足“一次開發,終身受用”,又可以滿足“調整靈活,圖形豐富”的要求。下文將分別介紹 R 的數據處理能力、可視化能力和可重復性數據分析能力。

3.1 數據處理

在企業級數據系統中,數據清洗、計算和整合工作會通過數據倉庫、Hive、Spark、Kylin 等工具完成。對于數據運營項目,雖然 R 操作的是結果數據集,但也不能避免需要在查詢層進行二次數據處理。

在數據查詢層,R 生態現成就存在眾多的組件支持,例如可以通過 RMySQL 包進行 MySQL 庫表的查詢,可以使用 Elastic 包對 Elasticsearch 索引文檔進行搜索。對于 Kylin 等新技術,在 R 生態的組件支持沒有跟上時,可以通過使用 Python、Java 等系統語言進行查詢接口封裝,在 R 內部使用 rPython、rJava 組件進行第三方查詢接口調用。通過查詢組件獲取的數據一般以 data.frame、list 等類型對象存在。

另外 R 本身也擁有比較完備的二次數據處理能力。例如可以通過 sqldf 使用 sql 對 data.frame 對象進行數據處理,可以使用 reshape2 進行寬格式和窄格式的轉化,可以使用 stringr 完成各種字符串處理,其他如排序、分組處理、缺失值填充等功能,也都具備完善的語言本身和生態的支持。

3.2 數據可視化

數據可視化是數據探索過程和結果呈現的關鍵環節,而 “ R is a free software environment for statistical computing and graphics. ”,繪圖(可視化)系統也是 R 的最大優勢之一。

目前 R 主流支持的有三套可視化系統:

  1. 內置系統:包括有 base、grid 和 lattice 三個內置發行包,支持以相對比較樸素的方式完成圖形繪制。
  2. ggplot2:由 RStudio 的首席科學家 Hadley Wickham 開發,ggplot2 通過一套圖形語法支持,支持通過圖層疊加以組合的方式支持高度定制的可視化。這一理念也逐步影響了包括 Plotly、阿里 AntV 等國內外數據可視化解決方案。截至到 2018-08-02,CRAN 已經落地了 40 個 ggplot2 擴展包,參考 鏈接 。
  3. htmlwidgets for R:這一系統是在 RStudio 支持下于 2016 年開始逐步發展壯大,提供基于 JavaScript 可視化的 R 接口。htmlwidgets for R 作為前端可視化(for 前端工程師)和數據分析可視化(for 數據工程師)的橋梁,發揮了兩套技術領域之間的組合優勢。截至到 2018-08-02,經過兩年多的發展,目前 CRAN 上已經有 101 個基于 htmlwidgets 開發的第三方包,參考 鏈接 。

實際數據運營分析過程中,可以固化常規的圖表展現和可視化分析過程,實現代碼復用,提高開發效率。下圖是美團到店餐飲技術部數據團隊積累的部分可視化組件示例:

 

美團R語言數據運營實戰

圖一 可視化組件示例

基于可視化組件庫,一個可視化過程只需要一行代碼即可完成,能極大提升開發效率。上圖中最后的四象限矩陣分析示例圖的代碼如下:

  1. vis_4quadrant(iris, 'Sepal.Length''Petal.Length', label = 'Species', tooltip = 'tooltip', title = '', xtitle = '萼片長度', ytitle = '花瓣長度', pointSize = 1, annotationSize = 1) 

茲再附四象限矩陣分析可視化組件的函數聲明:

 

  1. vis_4quadrant <- function(df, x, y, 
  2.   label = '', tooltip = '', title = '', xtitle = '', ytitle = ''
  3.   showLegend = T, jitter = T, centerType = 'mean'
  4.   pointShape = 19, pointSize = 5, pointColors = collocatcolors2, 
  5.   lineSize = 0.4, lineType = 'dashed', lineColor = 'black'
  6.   annotationFace = 'sans serif', annotationSize = 5, annotationColor = 'black', annotationDeviationRatio = 15, 
  7.   gridAnnotationFace = 'sans serif', gridAnnotationSize = 6, gridAnnotationColor = 'black', gridAnnotationAlpha = 0.6, 
  8.   titleFace = 'sans serif', titleSize = 12, titleColor = 'black'
  9.   xyTitleFace = 'sans serif', xyTitleSize = 8, xyTitleColor = 'black'
  10.   gridDesc = c('A 區''B 區''C 區''D 區'), dataMissingInfo = '數據不完整', renderType = 'widget') { 
  11.  
  12.   # 繪制分組散點圖 
  13.   # 
  14.   # Args: 
  15.   #   df: 數據框;必要字段;需要進行圖形繪制的數據,至少應該有三列 
  16.   #   x: 字符串;必要字段;映射到 X 軸的列名,對應 df 的某一列,此列必須是數值類型或日期類型 
  17.   #   y: 字符串;必要字段;映射到 Y 軸的列名,對應 df 的某一列 
  18.   #   label: 字符串;映射到點上的文字注釋 
  19.   #   tooltip: 字符串;映射到點上的懸浮信息 
  20.   #   title: 字符串;標題 
  21.   #   xtitle: 字符串;X 軸標題 
  22.   #   ytitle: 字符串;Y 軸標題 
  23.   #   showLegend: bool;定義分區圖例是否展示 
  24.   #   jitter: bool;定義是否擾動 
  25.   #   centerType: 字符串;定義中心點類型,mean 代表平均值,median 代表中位數 
  26.   #   pointShape: 整形;定義點型 
  27.   #   pointSize: 數值;定義點大小 
  28.   #   lineSize: 數值;定義線寬 
  29.   #   lineType: 字符串;定義線型 
  30.   #   lineColor: 字符串;定義線色 
  31.   #   annotationFace: 字符串;定義注釋字體 
  32.   #   annotationSize: 數值;定義注釋字體大小 
  33.   #   annotationColor: 字符串;定義注釋字體顏色 
  34.   #   annotationDeviationRatio: 數值;定義注釋文本向上偏移系數 
  35.   #   gridAnnotationFace: 字符串;定義網格注釋字體 
  36.   #   gridAnnotationSize: 數值;定義網格注釋字體大小 
  37.   #   gridAnnotationColor: 字符串;定義網格注釋字體顏色 
  38.   #   gridAnnotationAlpha: 數值;定義網格注釋文本透明度 
  39.   #   titleFace: 字符串;定義標題字體 
  40.   #   titleSize: 數值;定義標題字體大小 
  41.   #   titleColor: 字符串;定義標題字體顏色 
  42.   #   xyTitleFace: 字符串;定義 X、Y 軸標題字體 
  43.   #   xyTitleSize: 數值;定義 X、Y 軸標題字體大小 
  44.   #   xyTitleColor: 字符串;定義 X、Y 軸標題字體顏色 
  45.   #   gridDesc: 長度為 4 的字符串向量 
  46.   #   dataMissingInfo: 字符串;數據問題提示文本 
  47.   #   renderType: 字符串;定義渲染結果類型,widget 對應 htmlwidget 組件,html 對應 html 內容 
  48.  
  49.   #   代碼實現略 

3.3 可重復性數據分析

數據運營分析往往是一個重復性的、重人工參與的過程,最終會落地一套數據分析框架,這套數據分析框架適配具體的數據,用于支持企業數據決策。

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 次的耗時。

測試結果:

 

美團R語言數據運營實戰

根據測試結果可知:

單應用平均渲染時長在 0.74s 以上,具體的渲染時長視計算復雜度而定(可以通過上節介紹的“foreach + doParallel 多核并行方案 ”加快處理過程)。根據經驗,大部分應用能在秒級完成渲染。

由于單核單線程模式所限,當并發請求超過 CPU 核數時,渲染吞吐量并不會相應提升。需要根據實際業務場景匹配對應的服務端機器配置,并在請求轉發時設置并發執行上限。對于內部運營性質的數據系統,單臺 4 核 8 G 機器基本能滿足要求。

五、R 在美團數據產品中的落地實踐

美團到店餐飲數據團隊從 2015 年開始逐步將 R 作為數據產品的輔助開發語言,截至 2018 年 8 月,已經成功應用在面向管理層的日周月數據報告、面向數據倉庫治理的分析工具、面向內部運營與分析師的數據 Dashboard、面向大客戶銷售的品牌商家數據分析系統等多個項目中。目前所有的面向部門內部的定制式分析型產品,都首選使用 R 進行開發。

另外我們也在逐步沉淀 R 可視化與分析組件、開發基于 R 引擎的配置化 BI 產品開發框架,以期進一步降低 R 的使用門檻、提升 R 的普及范圍。

下圖是美團到店餐飲數據團隊在數據治理過程中,使用 R 開發的 ETL 間依賴關系可視化工具:

 

美團R語言數據運營實戰

圖三 ETL 間依賴關系可視化工具

六、結語

綜上所述,R 可以在企業數據運營實踐中扮演關鍵技術杠桿,但作為一門面向統計分析的領域語言,在很長一段時間,R 的發展主要由統計學家驅動。隨著近年的數據爆發式增長與應用浪潮,R 得到越來越多工業界的支持,譬如微軟收購基于 R 的企業級數據解決方案提供商 Revolution Analytics、在 SQL Server 2016 集成 R、并從 Visual Studio 2015 開始正式通過 RTVS 集成了 R 開發環境,一系列事件標志著微軟在數據分析領域對 R 的高度重視。

在國內,由 統計之都 發起的 中國 R 會議 ,從 2008 年起已舉辦了 11 屆,推動了 R 用戶在國內的發展壯大。截至 2018 年 8 月,美團的 R 開發者大致在 200 人左右。但相比 Java/Python 等系統語言,R 的用戶和應用面仍相對狹窄。

作者撰寫本文的目的,也是希望給從事數據相關工作的同學們一個新的、更具優勢的可選項。

關于作者

喻燦,美團到店餐飲技術部數據系統與數據產品團隊負責人,2015 年加入美團,長期從事數據平臺、數據倉庫、數據應用方面的開發工作。從 2013 年開始接觸 R,在利用 R 快速滿足業務需求和節省研發成本上,有一些心得和產出。同時也在美團研發和商業分析團隊中積極推動 R 的發展。

責任編輯:未麗燕 來源: 美團技術團隊
相關推薦

2020-02-12 14:05:41

系統緩存架構

2022-08-09 09:18:47

優化實踐

2023-11-26 17:48:00

營銷策略

2015-05-28 09:54:33

美團docker容器

2016-11-27 20:43:26

云計算迭代

2013-08-20 13:11:58

技術美團

2017-06-01 10:52:35

互聯網

2018-04-23 09:50:54

2022-03-03 16:45:02

美團述職反饋

2020-12-21 10:03:32

大數據美團技術

2019-05-29 10:42:06

大數據IT人工智能

2017-09-18 01:21:05

美團IDC集群銳捷網絡

2021-03-19 09:37:30

運營商外交部中國聯通

2015-09-15 09:58:05

美團技術支持云服務

2019-08-23 13:10:39

美團點評Kubernetes集群管理

2020-03-23 12:58:34

美團公有云互聯網

2012-04-10 15:13:42

微軟Windows Azu數據中心

2021-06-21 11:22:29

數據架構實踐

2018-07-20 10:18:05

走進美團工程師文化

2016-04-12 17:12:29

機器學習數據清洗美團
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜视频网站 | 亚洲国产精品成人 | 99亚洲精品 | 玖玖久久 | 午夜影院在线播放 | 老外几下就让我高潮了 | 欧美一区二区视频 | 激情六月丁香 | av在线影院 | 521av网站| www国产成人免费观看视频 | 全部免费毛片在线播放网站 | 91精品久久久久久久久中文字幕 | 蜜臀久久 | 人成在线视频 | 国产精品污污视频 | 欧美日本韩国一区二区 | 久久久久亚洲精品国产 | 国产一级黄色网 | 国产精品国产精品国产专区不卡 | 在线一区二区国产 | 91久久国产综合久久91精品网站 | 久久精品成人 | 国产精品视频一区二区三区 | 亚洲成在线观看 | 国产成人精品在线 | 久久久在线视频 | 久久精品 | 成人久草 | 亚洲欧美在线视频 | 亚洲精品国产第一综合99久久 | 美女露尿口视频 | 成人在线精品视频 | av综合站 | 中文字幕av在线播放 | 久久国产精品99久久久久久丝袜 | 免费观看的黄色网址 | 日韩一区二区三区精品 | 亚洲精品视频在线 | 正在播放国产精品 | 淫片一级国产 |