无法使用Apache spark 2.1.0连接到hive数据库

时间:2017-04-21 10:41:52

标签: apache-spark hive apache-spark-2.0

我正在使用spark 2.1.0版本并尝试与Hive表建立连接。我的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|
+------------+

所以,我有什么方法可以将火花连接到现有的蜂巢数据库?这里有什么我想念的吗?

3 个答案:

答案 0 :(得分:4)

您的hive-site.xml应该在classpath中。查看this帖子。如果您使用的是maven项目,那么您可以将此文件保存在资源文件夹中。

连接到hive的另一种方法是使用metastore uri。

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

答案 1 :(得分:0)

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

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

1.打开hive控制台并创建一个新数据库 hive>创建数据库venkat;

2.关闭蜂巢终端

3.copy 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();

我认为这会有所帮助

答案 2 :(得分:0)

第一步: 您应该在Custom spark2-defaults下进行如下配置: enter image description here

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

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

enter image description here

将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