初窥Spark SQL Catalyst

初窥Spark SQL Catalyst
在这篇文章中,我根据Spark SQL的论文,介绍了Spark SQL的一个关键模块:DataFrame API。我们现在已经知道,DataFrame和RDDs之间的关系应当是:DataFrame可以转化为RDDs,而RDDs也可以被映射为DataFrame。同时我们也知道,DataFrame API实质上是一套DSL,而最终在Spark计算框架中被执行的,应当是DataFrame最终转化后的RDDs。显而易见,人肉编写的DF所对应的DSL,存在着巨大的优化空间。这也就是本次文章所有讲述的Spark SQL的后半部分内容——Catalyst. *这里额外补一句,根据目前最新的代码,Spark已经把DataFrame这个东西去掉了,取而代之的则是Dataset,为了保持兼容,原来的DataFrame被定义为了Dataset[Row]的别名。关于这个Dataset我先观察观察,如果有必要的话,再单独拎出来说说,目前您可以假装认为它和DataFrame没有啥区别。   Catalyst O