在pyspark中编写的配置单元查询是针对spark还是针对hive进行的?

时间:2018-01-19 20:35:23

标签: hadoop hive pyspark apache-spark-sql

如果我在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();

1 个答案:

答案 0 :(得分:0)

  

每次sql是否触及底层的hive数据库,还是针对spark集群中加载的数据运行?

都不是。

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

最后PySpark在这里根本不相关。执行引擎是相同的,独立于语言绑定。