Spark SQL 源码分析之 In-Memory Columnar Storage 之 in-memory query

本文深入探讨了Spark SQL中In-Memory Columnar Storage的查询过程,详细介绍了InMemoryColumnarTableScan节点如何执行内存数据查询,以及ColumnAccessor如何访问和解析缓冲区数据,以满足特定列的查询需求。
摘要由CSDN通过智能技术生成

前面讲到了Spark SQL In-Memory Columnar Storage的存储结构是基于列存储的。

    那么基于以上存储结构,我们查询cache在jvm内的数据又是如何查询的,本文将揭示查询In-Memory Data的方式。

一、引子

本例使用hive console里查询cache后的src表。

select value from src

当我们将src表cache到了内存后,再次查询src,可以通过analyzed执行计划来观察内部调用。

即parse后,会形成InMemoryRelation结点,最后执行物理计划时,会调用InMemoryColumnarTableScan这个结点的方法。

如下:

 

 
  1. scala> val exe = executePlan(sql("select value from src").queryExecution.analyzed)

  2. 14/09/26 10:30:26 INFO parse.ParseDriver: Parsing command: select value from src

  3. 14/09/26 10:30:26 INFO parse.ParseDriver: Parse Completed

  4. exe: org.apache.spark.sql.hive.test.TestHive.QueryExecution =

  5. == Parsed Logical Plan ==

  6. Project [value#5]

  7. InMemoryRelation [key#4,value#5], false, 1000, (HiveTableScan [key#4,value#5], (MetastoreRelation default, src, None), None)

  8.  
  9. == Analyzed Logical Plan ==

  10. Project [value#5]

  11. InMemoryRelation [key#4,value#5], false, 1000, (HiveTableScan [key#4,value#5], (MetastoreRelation default, src, None), None)

  12.  
  13. == Optimized Logical Plan ==

  14. Project [value#5]

  15. InMemoryRelation [key#4,value#5], false, 1000, (HiveTableScan [key#4,value#5], (MetastoreRelation default, src, None), None)

  16.  
  17. == Physical P

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值