闪亮的砖上

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