闪亮的砖上
闪亮的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或检查您的代码版本控制。