烟台优化网站,深圳牌申请网站空间,注册一个商标多少钱,河南制作网站电话面试题来源#xff1a;
《大数据面试题 V4.0》
大数据面试题V3.0#xff0c;523道题#xff0c;679页#xff0c;46w字
可回答#xff1a;Spark常见的算子介绍一下
参考答案#xff1a;
我们先来看下Spark算子的作用#xff1a;
下图描述了Spark在运行转换中通过算…面试题来源
《大数据面试题 V4.0》
大数据面试题V3.0523道题679页46w字
可回答Spark常见的算子介绍一下
参考答案
我们先来看下Spark算子的作用
下图描述了Spark在运行转换中通过算子对RDD进行转换。 算子是RDD中定义的函数可以对RDD中的数据进行转换和操作。 输入在Spark程序运行中数据从外部数据空间如分布式存储textFile读取HDFS等parallelize方法输入Scala集合或数据输入Spark数据进入Spark运行时数据空间转化为Spark中的数据块通过BlockManager进行管理。
运行在Spark数据输入形成RDD后便可以通过变换算子如filter等对数据进行操作并将RDD转化为新的RDD通过Action算子触发Spark提交作业。 如果数据需要复用可以通过Cache算子将数据缓存到内存。
输出程序运行结束数据会输出Spark运行时空间存储到分布式存储中如saveAsTextFile输出到HDFS或Scala数据或集合中collect输出到Scala集合count返回Scala int型数据。
1、Transform和Action
Transformation是得到一个新的RDD但并不立即执行计算只是记录下这个操作。方式很多比如从数据源生成一个新的RDD从RDD生成一个新的RDD。
Action是指触发对RDD进行计算的操作得到一个值或者一个结果直接将RDD cache到内存中。
因为所有的Transformation都是采用的懒策略就是如果只是将Transformation提交是不会执行计算的计算只有在Action被提交的时候才被触发。这样有利于减少内存消耗提高了执行效率。
2、算子原理
1Transformation
map(func)返回一个新的分布式数据集由每个原元素经过func函数转换后组成。
filter(func)返回一个新的数据集由经过func函数后返回值为true的原元素组成。
flatMap(func)类似于map但是每一个输入元素会被映射为0到多个输出元素因此func函数的返回值是一个Seq而不是单一元素。
union(otherDataset)返回一个新的数据集由原数据集和参数联合而成。
groupByKey([numTasks])在一个由K,V对组成的数据集上调用返回一个KSeq[V])对的数据集。注意默认情况下使用8个并行任务进行分组你可以传入numTask可选参数根据数据量设置不同数目的Task。
reduceByKey(func, [numTasks])在一个KV)对的数据集上使用返回一个KV对的数据集key相同的值都被使用指定的reduce函数聚合到一起。和groupbykey类似任务的个数是可以通过第二个可选参数来配置的。
join(otherDataset, [numTasks])在类型为K,V)和K,W)类型的数据集上调用返回一个K,(V,W))对每个key中的所有元素都在一起的数据集。
2Action
reduce(func)通过函数func聚集数据集中的所有元素。Func函数接受2个参数返回一个值。这个函数必须是关联性的确保可以被正确的并发执行。
collect()在Driver的程序中以数组的形式返回数据集的所有元素。这通常会在使用filter或者其它操作后返回一个足够小的数据子集再使用直接将整个RDD集Collect返回很可能会让Driver程序OOM。
count()返回数据集的元素个数。
foreach(func): 在数据集的每一个元素上运行函数func。这通常用于更新一个累加器变量或者和外部存储系统做交互。