6

beeline我目前可以通过CLI访问 Apache Hive 数据库。我们仍在与 IT 部门协商以获取R服务器。在那之前,我想(ab)使用该R dbplyr包在另一台机器上生成 SQL 查询,复制它们,然后将它们作为原始 SQL 运行。我过去曾sql_renderdbplyr有有效数据库连接的情况下使用过,但如果没有有效的数据库连接,我不知道如何做到这一点。对我来说,理想的情况是:

con <- dummy_connection('hive')   # this does not exist, I think
qry <- tbl(con,'mytable') %>%     # complex logic to build a query
  select(var1,var2) %>%
  filter(var1 > 0)   # etc...
sql_render(qry) %>%               # cat it to a file to be used on another machine.
  as.character() %>%
  cat() 

有没有办法建立这种“虚拟”连接?并且可以以我可以指定 SQL 变体的方式完成吗?

4

1 回答 1

4

您可以仅使用 R 生成内存中的 SQLite 数据库:

library(DBI)
library(odbc)
library(RSQLite)
library(tidyverse)
library(dbplyr)

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

data("diamonds")

dbWriteTable(con, "diamonds", diamonds)

使用内存中的 SQL 数据库和数据库连接,您应该能够(ab)使用dbplyr与数据库的连接来让 R 为您编写 SQL。

这只是 SQLite,而不是 Hive。但希望它仍然是从 R 到 SQLite 到 Hive(或您首选的 SQL 版本)的加速器。

另请参阅以下链接:

于 2019-09-01T08:23:20.453 回答