无法使用 Apache spark 2.1.0 连接到配置单元数据库

Cannot connect to hive database using Apache spark 2.1.0

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

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

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

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

但我只看到默认数据库,

+------------+
|databaseName|
+------------+
|     default|
+------------+

所以我有什么方法可以将 spark 连接到现有的配置单元数据库?我在这里遗漏了什么吗?

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

连接到配置单元的另一种方法是使用 Metastore uri。

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

/usr/lib/hive/conf 中有一个 hive-site.xml 文件。将此文件复制到

/usr/lib/spark/conf 然后你会看到其他数据库。请按照以下步骤操作。

1.open 配置单元控制台并创建新数据库 配置单元 > 创建数据库 venkat;

2.close 配置单元终端

3.copy配置单元-site.xml文件

sudo cp /usr/lib/hive/conf/hive-site.xml        /usr/lib/spark/conf/hive-site.xml

4.check 数据库

sqlContext.sql("show databases").show();

我觉得会有帮助

第一步: 你应该在 Custom spark2-defaults 下这样配置:

第二步: 从命令行写入以下命令:

import com.hortonworks.hwc.HiveWarehouseSession
import com.hortonworks.hwc.HiveWarehouseSession._
val hive = HiveWarehouseSession.session(spark).build()
hive.showDatabases().show()

将 Apache Hive 与 Spark 和 BI 集成: https://docs.hortonworks.com/HDPDocuments/HDP3/HDP-3.0.0/integrating-hive/content/hive_configure_a_spark_hive_connection.html

HiveWarehouseSession API 操作: https://docs.hortonworks.com/HDPDocuments/HDP3/HDP-3.0.0/integrating-hive/content/hive_hivewarehousesession_api_operations.html