繁体   English   中英

HIVE 上的 Spark-SQL 插件

[英]Spark-SQL plug in on HIVE

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的beeline,我们实际上可以创建,删除和操作HIVE中的表。API可以是Spark-SQL或HIVE QL。 如果我们创建一个表/删除一个表,如果我们登录到 HIVE 并检查(比如通过 HIVE 直线或 HIVE CLI),它将清晰可见。 换句话说,通过 Spark 所做的更改可以在 HIVE 表中看到。

我的理解是 Spark 没有自己的元存储设置,如 HIVE。Spark 仅使用 HIVE 设置,而 SQL 的执行仅通过 Spark SQL API 发生。

我的理解在这里正确吗?

然后我对 bin/spark-sql.sh 的用法有点困惑(它也存在于 Spark 安装中)。 文档说通过这个 SQL shell,我们可以像上面那样创建表(通过 Thrift Server/Beeline)。 现在我的问题是:元数据信息是如何被spark维护的呢?

或者像第一种方法,我们可以让 spark-sql CLI 与 HIVE(具体来说:HIVE 的 hiveserver2)通信吗? 如果是,我们该怎么做?

提前致谢!

我的理解是 Spark 没有自己的元存储设置,如 HIVE

如果未提供 Hive 元存储,Spark 将自行启动 Derby 服务器

我们可以让 spark-sql CLI 与 HIVE 通信吗

启动外部 Metastore 进程,将hive-site.xml文件添加到$SPARK_CONF_DIRhive.metastore.uris ,或使用SET SQL 语句。

然后spark-sql CLI 应该可以查询 Hive 个表。 从代码中,您需要在 SparkSession 上使用enableHiveSupport()方法。

暂无
暂无

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

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