在 HIVE 上插入 Spark-SQL 插件
Posted
技术标签:
【中文标题】在 HIVE 上插入 Spark-SQL 插件【英文标题】:Spark-SQL plug in on HIVE 【发布时间】:2021-07-30 18:02:20 【问题描述】:HIVE 有一个 Metastore,HIVESERVER2 监听 SQL 请求;在 Metastore 的帮助下,执行查询并将结果传回。 Thrift 框架实际上被定制为 HIVESERVER2。通过这种方式,HIVE 充当服务。通过编程语言,我们可以使用 HIVE 作为数据库。
Spark-SQL 和 HIVE 的关系是:
Spark-SQL 仅使用 HIVE 设置(HDFS 文件系统、HIVE Metastore、Hiveserver2)。当我们调用 /sbin/start-thriftserver2.sh(存在于 spark 安装中)时,我们应该提供 hiveserver2 端口号和主机名。然后通过 spark 的直线,我们实际上可以在 HIVE 中创建、删除和操作表。 API 可以是 Spark-SQL 或 HIVE QL。 如果我们创建一个表/删除一个表,如果我们登录到 HIVE 并检查(比如通过 HIVE beeline 或 HIVE CLI),它将清晰可见。换句话说,通过 Spark 所做的更改可以在 HIVE 表中看到。
我的理解是,Spark 没有像 HIVE 这样的自己的元存储设置。 Spark 只是利用 HIVE 设置,并且简单地通过 Spark SQL API 执行 SQL。
我的理解正确吗?
然后我对 bin/spark-sql.sh 的用法有点困惑(它也存在于 Spark 安装中)。文档说通过这个 SQL shell,我们可以像上面那样创建表(通过 Thrift Server/Beeline)。现在我的问题是:那么spark是如何维护元数据信息的呢?
或者像第一种方法一样,我们可以让 spark-sql CLI 与 HIVE 通信(具体来说:HIVE 的 hiveserver2)吗? 如果是,我们该怎么做?
提前致谢!
【问题讨论】:
【参考方案1】:我的理解是 Spark 没有像 HIVE 这样的自己的元存储设置
如果未提供 Hive 元存储,Spark 将自行启动 Derby 服务器
我们可以制作 spark-sql CLI 来与 HIVE 通信吗
启动一个外部元存储进程,将hive-site.xml
文件添加到$SPARK_CONF_DIR
和hive.metastote.uris
,或者使用SET
SQL 语句来实现同样的目的
【讨论】:
以上是关于在 HIVE 上插入 Spark-SQL 插件的主要内容,如果未能解决你的问题,请参考以下文章