sparklyr无法查看在Hive中创建的数据库,反之亦然

时间:2017-05-31 08:44:27

标签: r hadoop hive sparklyr

我在本地安装了Apache Hive,我试图通过Rstudio / sparklyr读取表格。

我使用Hive创建了一个数据库:

hive> CREATE DATABASE test;

我试图使用以下R脚本读取该数据库:

library(sparklyr)
library(dplyr)
library(DBI)

spark_disconnect_all()

Sys.setenv(SPARK_HOME = "/home/alessandro/spark-2.1.0-bin-hadoop2.7")

config <- spark_config()
config$spark.executor.instances <- 4
config$spark.executor.cores <- 4
config$spark.executor.memory <- "4G"
config$spark.sql.hive.metastore <- "/home/alessandro/spark-warehouse"
config$hive.metastore.warehouse.dir <- "/home/alessandro/spark-warehouse"
sc <- spark_connect(master="local", config=config, version="2.1.0")

dbGetQuery(sc, "show databases")

尽管如此,dbGetQuery(sc, "show databases")并未显示已创建的数据库,并且由于数据库文件夹test.db已正确放置在指定的hive.metastore.warehouse.dir中,因此很难实现。

同样,如果我使用dbGetQuery(sc,&#34; CREATE DATABASE test2&#34;)创建数据库,则会在hive.metastore.warehouse.dir中创建一个数据库文件夹,但我无法通过Hive看到它使用:

hive> show databases;

基本上,即使所有数据库文件夹都放在正确的路径中,从Hive我只能看到通过Hive创建的数据库,而从R我只能看到通过R创建的数据库。

1 个答案:

答案 0 :(得分:2)

我解决了在文件hive-site.xml中添加与hive连接的配置的问题:

   <property>
    <name>hive.metastore.uris</name>
    <value>thrift://localhost:9083</value>
  </property>