无法使用 Apache spark 2.1.0 连接到 hive 数据库

Jus*_*tin 4 hive apache-spark apache-spark-2.0

我正在使用 spark 2.1.0 版本并尝试与 Hive 表建立连接。我的 hive 数据仓库位于 hdfs 的 /user/hive/warehouse 中,通过列出该文件夹的内容,我可以看到其中的所有 dbname.db 文件夹。经过一些研究,我发现我需要spark.sql.warehouse.dir在 spark 2.x 中指定它,并且我将其设置为这样

val spark = SparkSession
      .builder()
      .appName("Spark Hive Example")
      .config("spark.sql.warehouse.dir", "/user/hive/warehouse")
      .enableHiveSupport()
      .getOrCreate() 
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试打印数据库

spark.sql("show databases").show()

但我只看到默认数据库,

+------------+
|databaseName|
+------------+
|     default|
+------------+
Run Code Online (Sandbox Code Playgroud)

所以我有什么办法可以将 spark 连接到现有的 hive 数据库?有什么我在这里想念的吗?

aba*_*hel 5

hive-site.xml应该在类路径中。检查这个帖子。如果您使用的是 Maven 项目,那么您可以将此文件保存在资源文件夹中。

连接到 hive 的另一种方法是使用 Metastore uri。

val spark = SparkSession
.builder()
.appName("Spark Hive Example")
.master("local[*]")
.config("hive.metastore.uris", "thrift://localhost:9083")
.enableHiveSupport()
.getOrCreate();
Run Code Online (Sandbox Code Playgroud)