首页 > 解决方案 > 使用 Sparklyr 时未显示 Hive 表

问题描述

我正在尝试从 RStudio 网站复制本教程

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

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

此外,令人惊讶的是,当我跑步时,hive_context(sc) %>% invoke('sql', 'show tables') %>% collect()我没有得到任何桌子;就好像 Spark 正在连接到不同的 Hive 实例。

例如,如果我运行以下命令将表添加到 Hive 数据库,它将显示在 Connections 选项卡上,并且在我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;时,它不会显示 iris 表。

如何告诉 Spark 连接到 Hive 的“正确”实例?

标签: rapache-sparkhiverstudiosparklyr

解决方案


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

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

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

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

推荐阅读