用 pyspark 编写的 Hive 查询是针对 Spark 还是针对 Hive 运行?



如果我在pyspark中注册一个Hive表,然后针对该表写入sql,则sql是每次都命中底层Hive数据库,还是针对Spark群集中加载的数据运行? 我正在一个 jupyter 笔记本中运行它

hive_context = HiveContext(sc) #Initialize Hive
tbl_df = hive_context.table("hive_schema.hive_tbl_name")
tbl_df.registerTempTable("hive_tbl_name");
#Do the below queries run against Hive or against Spark
hive_context.sql("select count(*) from hive_tbl_name".).show();
hive_context.sql("select max(col1) from hive_tbl_name".).show();
SQL

是每次都命中底层 Hive 数据库,还是针对 Spark 群集中加载的数据运行?

也不。

  • 如果未缓存数据,则每次执行查询时都会命中磁盘。没有"在 Spark 群集中加载"状态。
  • 查询永远不会每次都命中"底层 Hive 数据库",因为 Hive 不是数据库。Spark 从 Hive 元存储读取表信息。无论上下文如何,都不涉及 HiveServer 执行。

最后,PySpark在这里完全无关紧要。执行引擎是相同的,独立于语言绑定。

相关内容

  • 没有找到相关文章

最新更新