面试 | Spark知识点@20190103

RDD、DataFrame和DataSet

RDD是Spark最早的数据模型,叫做弹性分布式数据集。它是Spark对数据的一种抽象,是一种数据结构。一个RDD就是数据的一个不可变的分布式元素集合,在集群中跨界点分布,可以通过若干提供了转换和处理的底层API进行处理

DataFrame也是数据的一个不可变分布式集合。但与RDD不同的是,数据都被组织到有名字的列中,类似关系型数据库的表。设计DataFrame的目的就是要让对大型数据集的处理变得更简单,它让开发者可以为分布式数据集指定一个模式,进行更高层次的抽象。它提供了特定领域内专用的API来处理你的分布式数据,并让更多的人可以更方便地使用Spark。

Dataset是Spark2.0之后出来的,Dataset是一种起那个类型集合,与领域对象相关,可以使用函数或者关系进行分布式操作。每个Dataset也有一个无类型的视图,叫做DataFrame,也就是关于Row的Dataset。

Dataset的执行效率更高,运行时类型安全。

Spark使用parquet文件格式有什么好处?

parquet是列式存储格式的一种文件类型,列式存储有以下的核心优势:

  • 可以跳过不符合条件的数据,只读取需要的数据,降低IO数据量
  • 压缩编码可以降低磁盘存储空间。由于同一列的数据类型是一样的,可以使用更高效的压缩编码进行进一步节约存储空间
  • 只读取需要的列,支持向量运算,能够获取更好的扫描性能

Spark中partition和hdfs block有什么关联关系?

hdfs中的block是分布式存储的最小单元,等分,可设置冗余,这样设计有一部分磁盘空间浪费,但是整齐的block大小,便于快读找到,读取对应的内容

Spark中的partition是RDD的最小单元,RDD是由分布在各个节点上的partition组成的。partition是指的spark计算过程中,生成的数据在计算空间内的最小单元,同一份数据的partition大小不一,数量不定,是根据Application里的算子和最初读入的数据分块数据决定

block位于存储空间,partition位于计算空间,block的大小是固定的,partition大小是不固定的。

你可能感兴趣的:(面试 | Spark知识点@20190103)