随笔--Spark Sql 知识总结

内存列存储(In-Memory Columnar Storage)
摆脱了对hive的依赖性,SparkSQL无论在数据兼容、性能优化、组件扩展方面都得到了极大的方便。
SparkSql特点
1)引入了新的RDD类型SchemaRDD,可以像传统数据库定义表一样来定义SchemaRDD
2)在应用程序中可以混合使用不同来源的数据,如可以将来自HiveQL的数据和来自SQL的数据进行Join操作。
3)内嵌了查询优化框架,在把SQL解析成逻辑执行计划之后,最后变成RDD的计算

parkSQL在下面几点做了优化:
1)内存列存储(In-Memory Columnar Storage)
不存在冗余列问题,避免数据在内存中类型的频繁转换,更高效的压缩算法
基于列存储,每列数据都是同质的,所以可以降低数据类型转换的CPU消耗
每个列创建一个JVM对象,从而可以快速的GC和紧凑的数据存储;

SparkSql将RDD封装成一个DataFrame对象,这个对象类似于关系型数据库中的表。 它是个只读的表,不能在运算过程再往里加元素。

val rdd = sc.parallelize(List(1,2,3,4,5,6))
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:21

 sc.parallelize(List( (1,"beijing"),(2,"shanghai") ) )
 res3: org.apache.spark.rdd.RDD[(Int, String)] = ParallelCollectionRDD[5] at parallelize at <console>:22

猜你喜欢

转载自blog.csdn.net/qq_38973672/article/details/88121118