繁体   English   中英

无法使用Spark访问Hive仓库目录

[英]Unable to access to Hive warehouse directory with Spark

我正在尝试使用位于以下路径的IntelliJ上的Spark连接到Hive仓库目录:

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)给我:

  • 名称:默认
  • 描述:默认的Hive数据库
  • locationUri:hdfs:// localhost:9000 / user / hive / warehouse

spark.catalog.listTables.show(false)给我一个空的结果。 因此,此步骤有问题。

在作业执行结束时,我得到了以下错误:

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

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

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

我已经使用Hive控制台创建了数据库“ test”。

下面是我组件的版本:

  • 火花:2.2.0
  • 配置单元:1.1.0
  • 的Hadoop:2.7.3

有任何想法吗 ?

在IntelliJ项目中的src下创建资源目录,然后将conf文件复制到该文件夹​​下。 构建项目..确保正确定义hive.metastore.warehouse.uris路径,并引用hive-site.xml。 在日志中,如果您正在获取INFO元存储库:已连接到元存储库,那么您就很好了。 例。

请注意,与打包jar并在hadoop集群上运行相比,与intellij建立连接并运行该作业的速度较慢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM