閃亮的磚上

閃亮的R是一個包,可以在凹口,用於構建交互式R應用和儀表板。您可以使用閃亮的內部RStudio服務器托管在磚集群。你也可以開發、主機和共享閃亮的應用程序直接從磚筆記本。

開始的,看到了閃亮的教程。你可以在磚筆記本上運行這些教程。

本文描述了如何在磚上運行的應用程序和使用Apache火花閃亮的內部應用程序。

閃亮的R筆記本裏麵

需求

  • 磚運行時8.3及以上。

R筆記本內部開始閃亮

閃亮的包是包含在磚運行時。可以交互地開發和測試的應用程序內部磚R筆記本類似RStudio托管。

按照以下步驟開始:

  1. 創建一個R筆記本。

  2. 導入的包和運行示例應用程序01 _hello如下:

    圖書館(閃亮的)runExample(“01 _hello”)
  3. 當應用程序準備好了,輸出包括閃亮的應用程序的URL作為一個可點擊的鏈接,打開一個新標簽。與其他用戶分享這個程序,請參閱共享的應用程序的URL

    例子的應用

請注意

  • 日誌消息出現在命令結果,類似於默認的日誌消息(http://0.0.0.0:5150這個例子所示)。

  • 停止的應用程序,單擊取消

  • 閃亮的應用程序使用筆記本R過程。如果你從集群分離筆記本,或者如果你取消電池運行應用程序,閃亮的應用程序終止。你不能運行其他細胞而閃亮的應用程序正在運行。

從磚回購協議運行的應用程序

您可以運行的應用程序檢查磚回購

  1. 克隆一個偏遠的Git存儲庫

  2. 運行應用程序。

    圖書館(閃亮的)runApp(“006 - tabsets”)

運行的應用程序從文件

如果你的應用程序代碼是一個項目的一部分,由版本控製管理,您可以運行它在筆記本上。

請注意

您必須使用絕對路徑或設置工作目錄setwd ()

  1. 查看存儲庫中的代碼使用代碼類似:

    %上海git克隆https:/ /githubcom/rstudio/閃亮的- - - - - -例子git克隆“shiny-examples”
  2. 運行應用程序,在另一個單元中輸入代碼類似於以下:

    圖書館(閃亮的)runApp(“磚/司機/ shiny-examples / 007 -小部件/”)

共享的應用程序的URL

閃亮的應用程序的URL生成的當你開始應用與其他用戶共享。任何磚用戶與可以連接到允許在集群上可以查看和與應用程序交互,隻要應用程序和集群運行。

如果集群上運行的應用程序,該應用程序將無法訪問。你可以禁用自動終止在集群環境中。

如果你連接和運行筆記本主機閃亮的應用在不同的集群中,閃亮的URL更改。還有,如果你重新啟動應用程序在同一集群中,閃亮的可能選擇一個不同的隨機端口。確保一個穩定的URL,您可以設置shiny.port選項,或者,當重新啟動應用程序在同一集群中,您可以指定港口論點。

閃亮的RStudio托管服務器上

需求

重要的

與RStudio服務器支持,必須禁用代理身份驗證。確保auth-proxy = 1不存在裏麵/etc/rstudio/rserver.conf

開始使用RStudio托管服務器上的

  1. 打開RStudio磚。

  2. 在RStudio,導入的包和運行示例應用程序01 _hello如下:

    >圖書館(閃亮的)>runExample(“01 _hello”)http:/ /127.00.1:3203年

    出現一個新窗口,顯示的應用程序。

    第一個閃閃發光的應用

運行一個閃亮的應用程序從一個R腳本

從一個R腳本運行的應用程序,打開在RStudio編輯器並單擊R腳本運行應用程序按鈕在右上角。

閃亮的運行程序

使用Apache火花閃亮的內部應用程序

您可以使用Apache SparkR或sparklyr火花閃亮的內部應用程序。

使用SparkR閃亮的筆記本

圖書館(閃亮的)圖書館(SparkR)sparkR.session()用戶界麵< -fluidPage(mainPanel(textOutput(“價值”)))服務器< -函數(輸入,輸出){輸出美元價值< -renderText({nrow(createDataFrame(虹膜))})}shinyApp(用戶界麵=用戶界麵,服務器=服務器)

使用sparklyr閃亮的筆記本

圖書館(閃亮的)圖書館(sparklyr)sc< -spark_connect(方法=“磚”)用戶界麵< -fluidPage(mainPanel(textOutput(“價值”)))服務器< -函數(輸入,輸出){輸出美元價值< -renderText({df< -sdf_len(sc,5,重新分區=1)% > %spark_apply(函數(e)總和(e))% > %收集()df美元結果})}shinyApp(用戶界麵=用戶界麵,服務器=服務器)
圖書館(dplyr)圖書館(ggplot2)圖書館(閃亮的)圖書館(sparklyr)sc< -spark_connect(方法=“磚”)diamonds_tbl< -spark_read_csv(sc,路徑=“/ databricks-datasets / Rdatasets /數據- 001 / csv / ggplot2 / diamonds.csv”)#定義UI用戶界麵< -fluidPage(sliderInput(“克拉”,“選擇克拉範圍:”,最小值=0,馬克斯=5,價值=c(0,5),一步=0.01),plotOutput(“陰謀”))#定義服務器代碼服務器< -函數(輸入,輸出){輸出美元情節< -renderPlot({#選擇鑽石克拉範圍df< -diamonds_tbl% > %dplyr::選擇(“克拉”,“價格”)% > %dplyr::過濾器(克拉> =! !輸入美元克拉[[1]],克拉< =! !輸入美元克拉[[2]])#散點圖與平滑方法ggplot(df,aes(克拉,價格))+geom_point(α=1/2)+geom_smooth()+scale_size_area(max_size=2)+ggtitle(“價格與克拉”)})}#返回一個閃亮的應用對象shinyApp(用戶界麵=用戶界麵,服務器=服務器)
火花閃亮的應用

常見問題(FAQ)

為什麼我的閃亮的一段時間後應用灰色的嗎?

如果沒有與閃亮的交互應用,連接到應用程序大約10分鍾後關閉。

重新連接,刷新閃亮的應用程序頁麵。儀表板狀態重置。

為什麼我的閃亮的查看器窗口消失了一段時間後?

如果閃亮的查看器窗口空轉幾分鍾後消失,這是由於相同的超時“灰色”的場景。

為什麼長火花工作從來沒有回報呢?

這也是因為閑置超時。任何火花工作運行超過前麵提到的超時不能使其結果因為連接前關閉工作的回報。

我怎麼能避免超時?

  • 有一個解決方案建議功能要求:客戶端發送保持活著的消息,以防止TCP超時一些負載平衡器在Github上。解決方案發送心跳保持WebSocket連接活著當應用閑置。然而,如果應用程序被一個長時間運行的計算,這種方法不工作。

  • 閃亮的不支持長時間運行的任務。一個閃亮的博文推薦使用承諾和期貨異步運行長期任務,保持應用暢通。這是一個例子,使用心跳保持閃亮的應用還活著,並運行在一個長時間運行的火花工作未來構造。

    #編寫一個應用程序,它使用火花磚上訪問數據#第一,安裝以下軟件包:install.packages(未來)install.packages(承諾)圖書館(閃亮的)圖書館(承諾)圖書館(未來)計劃(多次寫入)HEARTBEAT_INTERVAL_MILLIS=1000年# 1秒#定義在這裏長火花的工作run_spark< -函數(x){#環境設置圖書館(“SparkR”,lib.loc=“磚/火花/ R / lib”)sparkR.session()irisDF< -createDataFrame(虹膜)收集(irisDF)Sys.sleep(3)x+1}run_spark_sparklyr< -函數(x){#環境設置圖書館(sparklyr)圖書館(dplyr)圖書館(“SparkR”,lib.loc=“磚/火花/ R / lib”)sparkR.session()sc< -spark_connect(方法=“磚”)iris_tbl< -copy_to(sc,虹膜,覆蓋=真正的)收集(iris_tbl)x+1}用戶界麵< -fluidPage(sidebarLayout(#顯示心跳sidebarPanel(textOutput(“keep_alive”)),#顯示輸入和輸出的火花工作mainPanel(numericInput(“num”,標簽=“輸入”,價值=1),actionButton(“提交”,“提交”),textOutput(“價值”))))服務器< -函數(輸入,輸出){# # # # # # # #心跳#定義反應變量< -reactiveVal(0)#定義與時間有關的觸發器autoInvalidate< -reactiveTimer(HEARTBEAT_INTERVAL_MILLIS)#與時間有關的變量的變化observeEvent(autoInvalidate(),{(()+1)})#顯示打印輸出美元keep_alive< -renderPrint(())# # # # # # # #火花工作結果< -reactiveVal()#火花工作的結果< -reactiveVal(0)#火花工作是否正在運行#啟動一個在未來當單擊actionButton火花工作observeEvent(輸入美元提交,{如果(()! =0){showNotification(“已經運行的火花工作……”)返回()}showNotification(“啟動一個新的火花工作……”)#輸入美元num必須閱讀以外的未來input_x< -輸入美元全國礦工工會砰的一聲< -未來({run_spark(input_x)})%…> %結果()#或:砰的一聲< -未來({run_spark_sparklyr (input_x)}) %……> %結果()(1)#捕獲異常並通知用戶砰的一聲< -(砰的一聲,函數(e){結果()(e美元消息)showNotification(e美元消息)})砰的一聲< -最後(砰的一聲,函數(){(0)})#返回承諾以外的東西所以閃亮的響應})#當火花工作回報,呈現價值輸出美元價值< -renderPrint(結果())}shinyApp(用戶界麵=用戶界麵,服務器=服務器)
  • 有硬限製的12小時後初始頁麵加載任何連接,即使活躍,將被終止。你必須刷新閃亮的應用程序重新連接在這些情況下。然而,潛在的WebSocket連接可以在任何時候關閉由多種因素,包括網絡不穩定或計算機睡眠模式。磚建議重寫閃亮的應用程序,它們不需要一個長壽的連接,不過度依賴會話狀態。

我的程序崩潰後立即啟動,但是代碼似乎是正確的。發生什麼事了?

有一個50 MB限製總額的數據可以顯示在磚的應用。如果應用程序的數據大小超過這個極限時,它會啟動後立即崩潰。為了避免這種情況,磚建議減少數據量,例如,將采樣數據或降低圖像的分辨率顯示。

我怎麼能開發一個閃亮的應用程序,可以發布到磚上的閃亮的服務器和訪問數據?

雖然您可以訪問數據自然使用SparkR或sparklyr磚在開發和測試期間,在閃閃發光的應用程序發布到一個獨立的托管服務,它不能直接訪問的數據和表在磚上。

讓您的應用程序功能磚外,你必須重寫你如何訪問數據。有幾個選項:

  • 使用JDBC / ODBC提交查詢一個磚集群。

  • 使用磚連接

  • 直接訪問對象存儲的數據。

磚建議您使用你的磚解決方案團隊找最好的方法為你的現有數據和分析架構。

我可以開發一個閃亮的應用程序在一個數據磚筆記本嗎?

是的,你可以開發一個閃亮的應用程序在一個數據磚筆記本。

我怎樣才能拯救RStudio托管服務器上閃亮的我開發的應用程序嗎?

您可以保存您的應用程序代碼在DBFS或檢查您的代碼版本控製。