用pyspark编写的配置单元查询是针对spark运行还是针对配置单元运行?

2exbekwf  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(385)

如果我在pyspark中注册一个配置单元表,然后针对该表编写sql,那么sql是每次都命中底层配置单元数据库,还是针对spark集群中加载的数据运行?我在一个笔记本上运行这个

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();
1tu0hz3e

1tu0hz3e1#

sql是每次都命中底层的配置单元数据库,还是针对spark集群中加载的数据运行?
都不是。
如果没有缓存数据,则每次执行查询时都会命中磁盘。没有“已加载到Spark簇”状态。
查询不会每次都命中“基础配置单元数据库”,因为配置单元不是数据库。spark从配置单元元存储中读取表信息。无论上下文如何,都不涉及hiveserver执行。
最后,pyspark在这里根本不相关。执行引擎是相同的,独立于语言绑定。

相关问题