了解 Hive SQL 如何在 Spark 中执行

Understanding how Hive SQL gets executed in Spark

我是 spark 和 hive 的新手。我需要了解在 Spark 中查询配置单元 table 时会发生什么。我正在使用 PySpark

例如:

warehouse_location = '\user\hive\warehouse'
from pyspark.sql import SparkSession
spark =SparkSession.builder.appName("Pyspark").config("spark.sql.warehouse.dir", warehouse_location).enableHiveSupport().getOrCreate()

DF = spark.sql("select * from hive_table")

在上面的例子中,实际的 SQL 运行 是在 spark 框架中还是在 Hive 的 MapReduce 框架中 运行

我只是想知道 SQL 是如何处理的。在 Hive 还是在 Spark 中?

SparkSQL 允许在 Hive 表中读取和写入数据。除了 Hive 数据外,任何 RDD 都可以转换为 DataFrame,并且 SparkSQL 可用于 运行 查询 DataFrame .

实际执行将发生在 Spark。您可以通过 运行ning a DF.count() 在您的示例中检查这一点,并通过 Spark UIhttp://localhost:4040.

跟踪作业

enableHiveSupport()HiveContext 具有误导性,因为它们表明与 Hive 有更深层次的关系。

实际上,Hive 支持意味着 Spark 将使用 Hive Metastore 来读写元数据。在 2.0 之前有 (window 函数支持,更好的解析器),但今天不再是这种情况。

Hive 支持暗示:

  • 完整的 Hive 查询语言兼容性。
  • Hive 上的任何形式的计算。