MapReduce每次读写,都需要序列化到磁盘。一个复杂任务,需要多次处理,几十次磁盘读写
Spark只需要一次磁盘读写,大部分处理在内存中进行
spark-shell(交互窗口模式):运行spark-shell需要指向申请资源的standalone spark集群信息,其参数为MASTER,还可以指定executor及driver的内存大小。spark-shell启动完成后,可以在交互窗口中输入scala命令,进行 *** 作,其中spark-shell已经默认生成spark对象
Dataframe-based API is primary API
1.DataSet演进历史 Spark第一代API :RDD优点
编译时类型安全,编译时就能检查出类型错误
面向对象的编程风格,直接通过类名点的方式来 *** 作数据
缺点
序列化和反序列化的性能开销,无论是集群间的通信,还是IO *** 作都需要对对象的结构和数据进行序列化和反序列化
GC性能开销,频繁创建和销毁对象,势必会增加GC
Spark第二代API :DataframeDataframe核心特征
Schema:包含了ROW为单位的每行数据的列的信息;spark通过schema就能够读懂数据,因此在通信和IO时就只需要序列化和反序列化数据,而结构的部分就可以省略了
off-heap:spark能够以二进制的形式序列化数据(不包括结构)到off-heap中,当要 *** 作数据时,就直接 *** 作off-heap内存
Tungsten:新的执行引擎
Catalyst:新的语法解析框架
优点
off-heap就像地盘,schema就像地图,Spark有地图又有自己地盘了,就可以自己说了算了,不再受JVM的限制,也就不再受GC的困扰了,通过schema和off-heap,Dataframe解决了RDD的缺点。对比RDD提升计算效率,较少数据读取,底层计算优化
缺点
Dataframe解决了RDD的缺点,但是却丢了RDD的优点。Dataframe不是类型安全的,API也不是面向对象风格的
Spark第三代API:DataSetDataSet 核心:Encoder
2.Spark SQL API介绍 二.DataSet基本 *** 作 1.DataSet的创建 2.DataSet的基础函数 3.DataSet的Actions *** 作 4.DataSet的类型化的转化 *** 作 5.DataSet内置函数
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)