1. Spark是什么?
- Spark是一个并行数据处理框架。它允许开发快速、统一的大数据应用程序,将批处理、流处理和交互分析结合起来。
2. RDD是什么?
- Spark的主要核心抽象称为弹性分布式数据集。RDD是满足这些属性的分区数据的集合。不可变、分布式、延迟计算、可捕获是常见的RDD属性。
3. Immutable 是什么?
- 一旦创建并赋值,就不可能更改,这个属性称为不变性。Spark在默认情况下是不可变的,它不允许更新和修改。但 可以转换成新的RDD。
4. Spark 内存计算?
- 将所有数据保存在内存中进行计算,而不是保存到磁盘中。因此Spark捕捉数据的速度比Hadoop快100倍。(可配置)
5. Spark engine 的职责?
- Spark负责跨集群调度、分发和监视应用程序。
6. 常见的Spark生态系统?
- Spark SQL
- Spark streaming
- 机器学习算法的MLLib
- GraphX用于图形计算
7. 分区是什么?
- 分区是数据的逻辑划分,这一思想源于Map-reduce (split)。专门为处理数据而派生的逻辑数据。小块数据也可以支持可伸缩性并加快处理速度。输入数据、中间数据和输出数据都是分区的RDD。
8. spark如何对数据进行分区?
- Spark使用map-reduce API对数据进行分区。在输入格式中,我们可以创建多个分区。在默认情况下,HDFS块大小是分区大小(为了获得最佳性能),但它“可以像Split那样更改分区大小”。
9. Spark如何存储数据?
- Spark是一个处理引擎,没有存储引擎。它可以从任何存储引擎(如HDFS、S3和其他数据资源)检索数据。
10 .什么是SparkCore?
- SparkCore是apache spark framework的一个基础引擎。内存管理、故障诊断、调度和监视作业以及与存储系统的交互是Spark的主要功能。
11. SparkSQL与HQL和SQL有何不同?
- SparkSQL是sparkCore引擎上的一个特殊组件,它支持SQL和HiveQueryLanguage而不改变任何语法。可以连接SQL表和HQL表。
12. 我们什么时候使用SPARK STREAMING?
- Spark流是一种实时处理流数据的API。Spark流从不同的资源收集流数据,如web服务器日志文件、社交媒体数据、股票市场数据或Hadoop生态系统,如Flume和Kafka。
13. Spark流API如何工作?
- 程序员在配置中设置一个特定的时间,在这个时间内有多少数据进入Spark,该数据作为批处理进行分离。
- 输入流(DStream)进入spark流, 被框架分解成分批的小块,然后送入spark引擎进行处理。
- Spark Streaming API将批量数据传递给核心引擎。核心引擎可以以流分批的形式生成最终结果。输出也采用batch的形式。
14. spark中的变换是什么?
- Spark在RDDs上提供了两种特殊的操作,称为转换和操作。
- 转换遵循惰性操作并临时保存数据,直到调用该操作。
- 每个转换生成/返回新的RDD。
- 转换示例:Map、flatMap、groupByKey、reduceByKey、filter、co-group、join、sortByKey、Union、distinct、sample都是常见的spark转换。
15. Action作用是什么?
- 操作是RDD的操作,该值返回到spar驱动程序,
- 该程序启动在集群上执行的作业-lazy 的 trigger。
- 转换的输出是动作的输入。
- reduce, collect, take采样,take, first, saveAsTextfile, saveAsSequenceFile, countByKey, foreach是Apache spark中常见的操作。
16. 什么是RDD lineage?
- 是一个重建丢失分区的RDD进程。
- Spark不会在内存中复制数据,如果数据丢失,Rdd会使用lineage来重建丢失的数据。
- 每个RDD都记得如何从其他数据集构建RDD。
17.Spark中的Map和flatMap是什么?
- 是处理数据的特定行或行。
- 在FlatMap中,每个输入项都可以映射到多个输出项(因此函数应该返回一个Seq,而不是单个项)。最常用来返回数组元素。
18.什么是广播变量?
- 广播变量允许程序员在每台机器上保持一个缓存的只读变量,而不是将其副本与任务一起发送。
- Spark支持两种类型的共享变量,称为广播变量(如Hadoop分布式缓存)和累加器(如Hadoop计数器)。
- 广播变量存储为数组缓冲区,它向工作节点发送只读值。
19. Accumulator是什么?
- Spark accumulator类似于Hadoop计数器,可以计算事件的数量和作业期间发生的事情。
- 只有驱动程序可以读取累加器值。