閃亮的磚上
閃亮的R是一個包,可以在凹口,用於構建交互式R應用和儀表板。您可以使用閃亮的內部RStudio服務器托管在磚集群。你也可以開發、主機和共享閃亮的應用程序直接從磚筆記本。
開始的,看到了閃亮的教程。你可以在磚筆記本上運行這些教程。
本文描述了如何在磚上運行的應用程序和使用Apache火花閃亮的內部應用程序。
閃亮的R筆記本裏麵
R筆記本內部開始閃亮
閃亮的包是包含在磚運行時。可以交互地開發和測試的應用程序內部磚R筆記本類似RStudio托管。
按照以下步驟開始:
創建一個R筆記本。
導入的包和運行示例應用程序
01 _hello
如下:圖書館(閃亮的)runExample(“01 _hello”)
當應用程序準備好了,輸出包括閃亮的應用程序的URL作為一個可點擊的鏈接,打開一個新標簽。與其他用戶分享這個程序,請參閱共享的應用程序的URL。
請注意
日誌消息出現在命令結果,類似於默認的日誌消息(
聽在http://0.0.0.0:5150
這個例子所示)。停止的應用程序,單擊取消。
閃亮的應用程序使用筆記本R過程。如果你從集群分離筆記本,或者如果你取消電池運行應用程序,閃亮的應用程序終止。你不能運行其他細胞而閃亮的應用程序正在運行。
閃亮的RStudio托管服務器上
使用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)
為什麼我的閃亮的查看器窗口消失了一段時間後?
如果閃亮的查看器窗口空轉幾分鍾後消失,這是由於相同的超時“灰色”的場景。
為什麼長火花工作從來沒有回報呢?
這也是因為閑置超時。任何火花工作運行超過前麵提到的超時不能使其結果因為連接前關閉工作的回報。
我怎麼能避免超時?
有一個解決方案建議功能要求:客戶端發送保持活著的消息,以防止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限製總額的數據可以顯示在磚的應用。如果應用程序的數據大小超過這個極限時,它會啟動後立即崩潰。為了避免這種情況,磚建議減少數據量,例如,將采樣數據或降低圖像的分辨率顯示。
有多少連接可以接受一個閃亮的應用鏈接在開發?
磚建議20。
我怎麼能開發一個閃亮的應用程序,可以發布到磚上的閃亮的服務器和訪問數據?
雖然您可以訪問數據自然使用SparkR或sparklyr磚在開發和測試期間,在閃閃發光的應用程序發布到一個獨立的托管服務,它不能直接訪問的數據和表在磚上。
讓您的應用程序功能磚外,你必須重寫你如何訪問數據。有幾個選項:
使用JDBC / ODBC提交查詢一個磚集群。
使用磚連接。
直接訪問對象存儲的數據。
磚建議您使用你的磚解決方案團隊找最好的方法為你的現有數據和分析架構。
我可以開發一個閃亮的應用程序在一個數據磚筆記本嗎?
是的,你可以開發一個閃亮的應用程序在一個數據磚筆記本。
我怎樣才能拯救RStudio托管服務器上閃亮的我開發的應用程序嗎?
您可以保存您的應用程序代碼在DBFS或檢查您的代碼版本控製。