RDD的操作是以Partition为单位,输入的是Partition,输出的是itertor
它的计算是不透明,它是什么类型,从用户应用程序的角度来讲,类型是不透明的
由此我们无法做更多的细致优化,如果我们能清楚地知道类型,就能做更多的限制,也就有了更多优化的空间
以下是一些图的对比:
从结构化的角度来看,SQL只能在runtime才能发现语法错误和类型错误,
DataFrane能在编译时发现语法错误,但是只能在运行时发现类型错误
而DataSet能在编译时就发现语法错误和类型错误,DataSet提供了最大的限制,也提供了最大的优化
无论怎么翻译,最后都是翻译成RDD
在2.0,Spark Streaming,Spark SQL,机器学习等等都是共用一套引擎,这是非常强大的
这里的scan new files其实指的是unbounded Table,
渐渐统一了批处理,流处理,机器学习等等
不过官方说了,Spark 2.0不适合在生产环境下运用
归纳总结:1.RDD的弱点
2.优化后的对比
3.SQL DataFrame DataSet 之间的错误检查的对比
4.理解引擎图
5.Structed Streaming的再次理解
6.Spark 2.0 适用于生产环境吗