无法使用 Apache spark 2.1.0 连接到 hive 数据库
Posted
技术标签:
【中文标题】无法使用 Apache spark 2.1.0 连接到 hive 数据库【英文标题】:Cannot connect to hive database using Apache spark 2.1.0 【发布时间】:2017-04-21 10:41:51 【问题描述】:我正在使用 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|
+------------+
那么我有什么方法可以将 spark 连接到现有的 hive 数据库?我在这里有什么遗漏吗?
【问题讨论】:
你在某处有一个 hive-site.xml 文件吗?这可能会覆盖默认设置。 另外,我建议使用调试日志:sc.setLoggerLevel("debug")
【参考方案1】:
您的hive-site.xml
应该在类路径中。检查this 帖子。如果您使用的是 maven 项目,则可以将此文件保存在资源文件夹中。
连接到 hive 的另一种方法是使用 metastore uri。
val spark = SparkSession
.builder()
.appName("Spark Hive Example")
.master("local[*]")
.config("hive.metastore.uris", "thrift://localhost:9083")
.enableHiveSupport()
.getOrCreate();
【讨论】:
您能否详细说明一下,为什么您的工作有效,而 OP 的config("spark.sql.warehouse.dir", "/user/hive/warehouse")
却没有?官方文档中也建议了 OP 的建议。显然,官方建议的内容对很多人都不起作用......
在 Spark 官方文档中,您是否看到可以像这样配置 Hive?【参考方案2】:
/usr/lib/hive/conf 中有一个 hive-site.xml 文件。将此文件复制到
/usr/lib/spark/conf 然后你会看到其他数据库。请按照以下步骤操作。
1.打开配置单元控制台并创建一个新数据库 hive>创建数据库venkat;
2.关闭蜂巢终端
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();
我觉得会有帮助
【讨论】:
【参考方案3】:第一步:
你应该在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
【讨论】:
以上是关于无法使用 Apache spark 2.1.0 连接到 hive 数据库的主要内容,如果未能解决你的问题,请参考以下文章
Spark 1.2 无法连接到 HDP 2.2 上的 HDFS
无法使用 SSO 钱包将 Oracle 与 Apache Spark 连接