使用 Sparklyr 时未显示 Hive table

Hive table is not shown when using Sparklyr

我正在尝试复制 this tutorial from RStudio website

当我将数据加载到 Hive 时,我可以在 Hive 命令行 运行 show tablesselect count(*) from airlines ,我将得到正确的响应。但是在本教程的后面,当我安装 sparklyr 并使用下面的命令连接到数据时,没有 table 显示在 RStudio 的“连接”选项卡中。

sc <- spark_connect(master = "yarn-client", config = config, version = '2.4.4')

此外,令人惊讶的是,当我 运行 hive_context(sc) %>% invoke('sql', 'show tables') %>% collect() 我没有得到 table 回复;就好像 Spark 正在连接到不同的 Hive 实例。

举个例子,如果我运行下面的命令添加一个table到Hive数据库,它会显示在Connections选项卡上,当我[=36]时它会被列出=] show tables 作为 SQL 命令。

iris_tbl <- copy_to(sc, iris, "iris", overwrite = TRUE)
hive_context(sc) %>% invoke('sql', 'show tables') %>% collect()
# A tibble: 1 x 3
  database tableName isTemporary
  <chr>    <chr>     <lgl>      
1 NA       iris      TRUE  

但是当我通过终端进入 Hive 命令行并且 运行 show tables; 它不会显示虹膜 table.

如何让 Spark 连接到 Hive 的 "right" 实例?

您使用的是哪个环境?对于 sparklyr 1.0.4+,如果你在 hadoop 2 上 运行,你需要手动设置 spark sql 目录实现。6x.You 可以尝试添加 spark.sql.catalogImplementation: "hive".

您的代码最终可能如下所示:

config <- spark_config()
config$spark.sql.catalogImplementation <- "hive"

sc <- spark_cconnect(master="yarn", config=config, version=...)