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

0vvn1miw  于 2021-06-26  发布在  Hive
关注(0)|答案(3)|浏览(365)

我正在使用spark2.1.0版本并尝试与配置单元表建立连接。我的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()

现在我正在打印数据库 spark.sql("show databases").show() 但我只看到默认数据库,

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

所以我想知道有什么方法可以把spark连接到现有的Hive数据库?这里有什么我不知道的吗?

inkz8wg9

inkz8wg91#

你的 hive-site.xml 应该在类路径中。看看这个帖子。如果您使用的是maven项目,那么可以将此文件保存在resources文件夹中。
连接到配置单元的另一种方法是使用元存储uri。

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

x9ybnkn62#

/usr/lib/hive/conf中有一个hive-site.xml文件
/usr/lib/spark/conf然后您将看到其他数据库。请按照以下步骤操作。
1.打开hive控制台,新建数据库hive>create database venkat;
2.关闭Hive终端
3.复制hive-site.xml文件

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

4.检查数据库

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

我想这会有帮助的

pgx2nnw8

pgx2nnw83#

第一步:你应该在下面这样配置 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

相关问题