无法使用spark访问配置单元仓库目录

0md85ypi  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(762)

我正在尝试使用intellij上的spark连接到配置单元仓库目录,该目录位于以下路径:

hdfs://localhost:9000/user/hive/warehouse

为此,我使用以下代码:

import org.apache.spark.sql.SparkSession

// warehouseLocation points to the default location for managed databases and tables
val warehouseLocation = "hdfs://localhost:9000/user/hive/warehouse"

val spark = SparkSession
 .builder()
 .appName("Spark Hive Local Connector")
 .config("spark.sql.warehouse.dir", warehouseLocation)
 .config("spark.master", "local")
 .enableHiveSupport()
 .getOrCreate()

spark.catalog.listDatabases().show(false)
spark.catalog.listTables().show(false)
spark.conf.getAll.mkString("\n")

import spark.implicits._
import spark.sql

sql("USE test")
sql("SELECT * FROM test.employee").show()

可以看到,我已经创建了一个数据库“test”,并使用配置单元控制台在这个数据库中创建了一个表“employee”。我想得到最新请求的结果。
“spark.catalog.”和“spark.conf.”用于打印仓库路径和数据库设置的属性。 spark.catalog.listDatabases().show(false) 给了我:
名称:默认
description:默认配置单元数据库
位置URI:hdfs://localhost:9000/用户/Hive/仓库 spark.catalog.listTables.show(false) 给我一个空的结果。所以这一步出了问题。
在作业执行结束时,我得到以下错误:

> Exception in thread "main" org.apache.spark.sql.catalyst.analysis.NoSuchDatabaseException: Database 'test' not found;

我还为配置单元仓库位置配置了hive-site.xml文件:

<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://localhost:9000/user/hive/warehouse</value>
</property>

我已经使用配置单元控制台创建了数据库“test”。
下面是我的组件的版本:
Spark:2.2.0
配置单元:1.1.0
hadoop:2.7.3版本
有什么想法吗?

ni65a41a

ni65a41a1#

在intellij项目的src下创建资源目录,并复制此文件夹下的conf文件。创建项目。。确保正确定义hive.metastore.warehouse.uris路径,请参阅hive-site.xml。在日志中,如果您正在获取信息metastore:连接到metastore,那么您就可以开始了。例子。
请注意,与打包jar并在hadoop集群上运行相比,连接intellij并运行作业的速度会很慢。

相关问题