首页 > 解决方案 > 深入了解 Spark 与 Hive 的交互

问题描述

我试图了解 Spark 和 Hive Metastore 之间的交互。我首先查看了从 Spark 到 Hive Metastore 的调用时间和调用方式。我可以看到一堆操作get_table调用spark.read.table,如果表被分区,则get_partitions当 DataFrame 通过调用操作实现时会调用几个调用。我注意到的另一件事是 Spark 不缓存表定义。每次对 Hive 表调用操作时,都会再次从底层元存储中读取定义和相应的分区!考虑到 Spark 为您提供了针对此类情况进行优化的其他选项,我对此感到满意,您可以保留 DataFrame。当我查看 API 调用模式时,我注意到一些奇怪的东西saveAsTable手术。get_table有用于创建表和按预期创建分区的 API 调用,但与此同时,对 Hive 元存储进行了大约 30次调用。我发现这些电话的目的真的很奇怪,也很难理解。

我正在寻找以下问题的答案。

标签: apache-sparkhivehive-metastore

解决方案


推荐阅读