包含标签 spark 的文章

Spark-Streaming 原理

spark streaming的基本原理,包括MicroBatchExecution,ContinuousExecution,通过IncrementalExecution + 状态实现micro-batch 并复用了spark 的所有查询逻辑;Source接口支持 getOffset,commit,可以自定义各种扩展实现;Sink包括:FileStreamSink、KafkaSink、DeltaSink、、ForeachBatchSink,ForeachWriteTable;Stateful将信息存如StateStoreRDD,保存到 HDFSBackedStateStoreProvider、RocksDBStateStoreProvider 中;Stream-Stream Join使用了StreamingSymmetricHashJoin,需要保证状态;Session Window同样也是通过插入一些流相关的算子 + 状态保存实现的

阅读全文

Photon A Fast Query Engine for Lakehouse Systems

Databricks 2022年在SIGMOD上发表的论文(最佳工业论文奖),由于I/O方面有很多优化措施,而JVM的对向量化支持较差,之后用C++实现了向量化的执行引擎Photon,来实现进一步的性能提升;首先是从最底层scan开始替换,因为中间替换的代价较高,之后不断往上,直到某个算子Photon不能适配,则由列存转换为Spark的行存,退回到Spark执行,总体看性能可以提升好几倍

阅读全文