Как использовать SQL-запросы в качестве вывода на веб-странице Rshiny - PullRequest
0 голосов
/ 21 февраля 2019

Итак, я пытаюсь вывести запрос в приложение Rshiny, но продолжаю получать ошибки в выводе.Вот мой вывод:

#
# This is a Shiny web application. You can run the application by clicking
# the 'Run App' button above.
#
# Find out more about building applications with Shiny here:
#
#    http://shiny.rstudio.com/
#

    library(shiny)
    library(DBI)

 for Spark 2.1.X
Sys.setenv(SPARK_HOME="/opt/cloudera/parcels/SPARK2/lib/spark2/")
Sys.setenv(SPARK_HOME_VERSION="2.1.0")


#Connecting to Spark
sc <- spark_connect(master ="yarn-client")

ui <- fluidPage(
  numericInput("nrows", "Enter the number of rows to display:", 5),
  tableOutput("tbl")
)

server <- function(input, output, session) {
  output$tbl <- renderTable({

    iris_preview <- dbGetQuery(sc,"select * from sndbx_dx.ncct_mapping limit 3")
    iris_preview

  })
}

shinyApp(ui, server)

Я просто пытаюсь заставить iris_preview показываться в блестящем приложении, когда я его запускаю.Кто-нибудь видит, что я делаю неправильно?

Я хочу вывести таблицы из базы данных Hive, так как я подключаюсь к spark.

1 Ответ

0 голосов
/ 21 февраля 2019

Вот простой пример, основанный на наборе данных iris и sqlite, чтобы вы начали:

library(shiny)
library(RSQLite)
library(DBI)
library(datasets)

con <- dbConnect(RSQLite::SQLite(), ":memory:")
dbWriteTable(con, "iris", iris)
dbListTables(con)

ui <- fluidPage(
  numericInput("nrows", "Enter the number of rows to display:", 5),
  actionButton(
    inputId = "queryButton",
    label = "Query",
    icon = icon("refresh")
  ),
  tableOutput("tbl")
)

server <- function(input, output, session) {
  iris_preview <- reactiveVal(data.frame())

  observeEvent(input$queryButton, {
    queryString <- sprintf("select * from iris limit %s", input$nrows)
    iris_preview(dbGetQuery(con, queryString))
  })

  output$tbl <- renderTable({
    iris_preview()
  })
}

shinyApp(ui, server)

В долгосрочной перспективе, пожалуйста, прочитайте это .

...