我正在尝试使用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版本
有什么想法吗?
1条答案
按热度按时间ni65a41a1#
在intellij项目的src下创建资源目录,并复制此文件夹下的conf文件。创建项目。。确保正确定义hive.metastore.warehouse.uris路径,请参阅hive-site.xml。在日志中,如果您正在获取信息metastore:连接到metastore,那么您就可以开始了。例子。
请注意,与打包jar并在hadoop集群上运行相比,连接intellij并运行作业的速度会很慢。