Nuansa solusi R pengoperasian di lingkungan perusahaan

Solusi berbasis R, baik pelaporan klasik maupun analitik operasional, telah membuktikan dirinya dengan sangat baik di lingkungan perusahaan. Tidak diragukan lagi, RStudio dan timnya yang penuh semangat memainkan peran penting dalam hal ini . Dalam produk RStudio komersial, Anda tidak perlu memikirkan masalah infrastruktur, tetapi cukup menukar sedikit uang untuk solusi siap pakai "di luar kotak" dan mengandalkan pengembang dan dukungan mereka. Dalam edisi open source, dan sebagian besar instalasi di perusahaan Rusia seperti itu, Anda harus memikirkan masalah infrastruktur sendiri.





Solusi R menutup ceruk "data rata-rata" dengan baik, ketika ada "sedikit lebih banyak" data daripada yang cocok dengan excel atau sistem relasional yang tidak dikonfigurasi dan diperlukan algoritma dan pemrosesan yang kompleks, tetapi jika masih terlalu dini untuk menerapkan "luncurkan kompleks "tanggal besar, tugas kita masih dalam orbit bumi. Kita berbicara tentang puluhan hingga ratusan terabyte secara penuh, yang dapat dengan mudah masuk ke backend di Clikhouse . Poin penting: semuanya ada di sirkuit internal, dalam sebagian besar kasus, BENAR-BENAR terputus dari Internet.





Melanjutkan serangkaian publikasi sebelumnya , menyempurnakan Blok Penyusun untuk Aplikasi Enterprise R yang Kuat .





Bermasalah

Untuk solusi yang produktif, Anda perlu memastikan hasil dan perhitungan yang dapat direproduksi. Masalah reproduktifitas dibagi menjadi beberapa arah berbeda. Blok besar dapat dibedakan:





  • reproduktifitas infrastruktur. Banyak pertanyaan ditutup dengan kombinasi teknologi buruh pelabuhan + renv + git.





  • reproduktifitas perangkat lunak. Banyak pertanyaan ditutup oleh teknologi paket dan tes otomatis.





  • statistik "kesamaan" dari hasil. Di sinilah kekhususan dari setiap tugas individu muncul. Beberapa poin disarankan di bawah ini untuk memastikannya.





Apa kesulitannya?





Algoritme "diluncurkan ke produksi"





  • bisa multiphase dengan waktu kalkulasi kumulatif beberapa jam;





  • «» ( , excel , ..);





  • , ;





  • ;





  • .





  • , ;





  • , . .





( ) , . , . , prod (), dev .





, . , , . , . . , (availability) X% $Y. .









  • . , .





  • , .





  • . .





  • .





  • data.frame



    , «» , .





, :





  • futile.logger





  • lgr





  • logger





warning



message



, . , .





, .Rds



(1-1000 Ram) . 3 :





  • fst





  • qs





  • arrow





-- . , , .. .





:





  • checkmate -- + ;





  • skimr -- ;





  • validate -- ;





  • testthat / tinytest -- ;





  • dplyr / data.table -- .





, . Win-Vector.





pipe (%>%



). . - ( «» « », ), . , , .



.





:





  • tidylog. , tidylog



    tidyverse



    , dpylr::mutate



    .





  • lumberjack.





, :





  • «Debugging with RStudio by Jonathan McPherson»





  • «Advanced R», . «Debugging»





(shiny )?





  • browser()



    . IDE. . -- . .





  • debug()



    /undebug()



    /debugonce()



    . , .., .





  • traceback()



    . .





  • options(datatable.verbose = TRUE)



    . data.table



    ( , , ).





  • utils::getFromNamespace



    . .





  • waldo diffobj. .





  • pryr::object_size()



    . «» .





  • reprex



    . .





  • gginnards



    . ggplot.





browser()



, data.table



.





library(data.table)
library(magrittr)

dt <- as.data.table(mtcars) %>%
  .[, {m <- head(.SD, 2); print(ls()); browser(); m}, by = gear]
#>  [1] "-.POSIXt"  "am"        "carb"      "Cfastmean" "cyl"       "disp"     
#>  [7] "drat"      "gear"      "hp"        "m"         "mpg"       "print"    
#> [13] "qsec"      "strptime"  "vs"        "wt"       
#> Called from: `[.data.table`(., , {
#>     m <- head(.SD, 2)
#>     print(ls())
#>     browser()
#>     m
#> }, by = gear)
      
      



. ( ) , .





  • bench





  • microbenchmark





  • system.time({…})







  • profvis





  • proffer





  1. .

    ? . , , .





  2. make



     . drake/targets





  3. Dalam masalah praktis mungkin ada berbagai macam kejutan, keajaiban data besar tidak selalu membantu, kita membaca detektif ironis "Menggunakan AWK dan R untuk mengurai 25tb"





Publikasi sebelumnya - "Bagaimana cara menjinakkan penambangan proses dengan R di suatu perusahaan?" ...








All Articles