r - 使用 Sparklyr 时未显示 Hive 表
问题描述
我正在尝试从 RStudio 网站复制本教程
当我将数据加载到 Hive 中时,我可以运行show tables
或select 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 的“正确”实例?
解决方案
您使用的是哪个环境?对于 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=...)
推荐阅读
- c# - C# UWP Toast 通知和推送通知之间的区别
- c# - 使用复选框异步下载
- angular-material - cdk-global-scrollblock 未在 Angular Material 对话框中应用
- gcc - gcc 5 does not detect stack smashing for inline functions but gcc 7 does
- mongodb - spring-boot mongodb 4.0 兼容性
- photo - 如何从谷歌照片api获取图像总数
- java - Spark 数据集 Joinwith 错误:连接条件丢失或不重要
- python - 如何在 Django 中解决此错误`ValueError: Value must be a list`
- php - 在 state 方法中隐藏变量值
- java - 无法构建应用程序出现错误::没有找到 jdk 类型的工具链