1、怎么理解scala里的方法和函数

• scala方法用def定义,函数用val定义
• scala方法可以和函数进行转换
• scala 方法用=>连接方法体,函数用=连接方法体
• scala方法是个块,而函数可以认为是个对象,可以传递
• scala 函数可以作为method的参数
• scala method也可以作为method的参数,表明有隐式转换把方法转换成了function

2、Spark的RDD是什么

• RDD意思是弹性分布式数据集
RDD有三个重要特性:

不可变性: 发生变化就是生产新的RDD了
分区 每个RDD都有Partition
并行:因为有分区,所以可以并行操作

RDD的组成包括

Array[Partition]
compute函数
RDD间的依赖关系
Partitioner,内置的主要是Hash分区器和range分区器,当然也可以自定义分区器
一个列表,存储每个partition的优先位置等

3、Spark的Shuffle有几种,说说各自的原理?

• 依据发展,spark的shuffle有hash shuffe,优化后的hashshuffle, sort shuffle,bypass sort shuffle
• 以上的几种shuffle主要区别在于shuffle阶段生成的中间文件的数目多少
• Hash shuffle

• 每个ShuffleMapTask先创建指定大小的缓冲区buffer
• ShuffleMapTask将数据写入buffer,之后溢写成blockfile
• blockfile的位置信息封装成Mapstatus传递个DAGscheduler
• 开始shuffle read阶段,相应的reduce task通过DAGscheduler的调度获取待读取文件的位置信息
• reduce task拉取数据到buffer
• 最终形成shuffle RDD

• 优化后的HashShuffle

• 加入shufflegroup
• 改进点在于为同一个executor落得所有shufflemaptask只维护一个buffer和blockfile,
就是说中间文件的数量=excutor数量* core数量*reduce数量,
而优化前的中间文件数量=excutor数量* core数量*map数量*reduce数量

• Sortshuffle

• 每个shuffleMaptask依据指定条件将数据分成若干份,每一份对应一个buffer.
• 在进入buffer之前,会先转成Map或者Array进行排序,
• buffer里的数据会溢写到磁盘上
• task产生的多个有序文件,会进行合并成一个,同时维护一个索引文件
• shuffle read阶段,首先获取索引文件信息,之后的同上

• bypass机制的sort shuffle

• 就是上面的机制不采取排序,有些shuffle操作并不需要排序

4、Spark On Yarn 的原理(Cluster和Client)

• cluster模式和client模式的主要区别在于drive位置的不同.
• clusetr模式下driver位于某一台worker上
• client模式下driver位于client上
二者的执行流程是类似的

1 client向Yarn的RM申请启动AppMaster
2 RM表示同意后并找到一个NM,给NM分配一个Container用于启动AppMaster
3 AM启动后开始干活,启动Executor执行task
4 Driver分配task并监控task的执行情况
5 任务完成后通知RM申请注销

5、SparkSql是什么,与SparkCore的区别是什么

• spark core实现了spark的基本功能:任务调度,内存管理,错误恢复等等.还包括对RDD的定义
• spark sql是构建在spark core上的一个模块
• spark sql用于处理结构化的数据
• spark sql有3代编程模型,第一代RDD,第二代DataFrame,第三代DataSet
• 使用spark sql需要首先构建Spark Session对象

spark sql是建立在spark core的基础上的,然后用起来其实更加方便.

def test7(): Unit ={val spark:SparkSession = SparkSession.builder().master("local[1]").appName("SparkByExamples.com").getOrCreate()import spark.implicits._spark.conf.set("spark.sql.shuffle.partitions",100)val simpleData = Seq(("James","Sales","NY",90000,34,10000),("Michael","Sales","NY",86000,56,20000),("Robert","Sales","CA",81000,30,23000),("Maria","Finance","CA",90000,24,23000),("Raman","Finance","CA",99000,40,24000),("Scott","Finance","NY",83000,36,19000),("Jen","Finance","NY",79000,53,15000),("Jeff","Marketing","CA",80000,25,18000),("Kumar","Marketing","NY",91000,50,21000))val df: DataFrame = simpleData.toDF("employee_name","department","state","salary","age","bonus")df.createTempView("tmp")val sql: String ="""|select * from tmp|where state="NY"|""".stripMarginspark.sql(sql).show()}

6、Kafka与redis的区别

• kafka是一个消息中间件,redis是一个缓存数据库
• kafka数据存储在磁盘上,redis数据存储在内存中
• kafka存储在硬盘上,可靠性相比redis要高一些
• kafka的数据可以重复消费,redis的数据消费后丢失(pop)

Spark 理论简答相关推荐

  1. 货币银行学简答论述题

    第二章 货币与货币制度 简答题 1.什么是货币的本质特征?它在商品经济中发挥着哪些主要功能? .答:货币是固定地充当一般等价物的特殊商品,并体现一定的社会生产关系.这就是货币的本质的规定. 货币在商品 ...

  2. 三个变量存在一个协整方程_计量经济学31个简答参考答案

    原标题:计量经济学31个简答参考答案 你,和经济,密不可分. 读中国经济,关注经管世界! [资源] 精美简历模板+自荐信+面试技巧免费共享 来源:计量经济学 1.什么是计量经济学?它与经济学.统计学和 ...

  3. 金融名词+简答+计算

    名词解释 金融工程:金融工程是以金融产品和解决方案的设计.金融产品的定价与风险管理为主要内 容 ,运用现代金融学.数理和工程方法与信息技术的理论与技术,对基础产品与金融衍生产 品进行组合与分解,以达到 ...

  4. java单链表查询功能,Java 实现简答的单链表的功能

    作者:林子木  博客网址:http://blog.csdn.net/wolinxuebin 參考网址:http://blog.csdn.net/sunsaigang/article/details/5 ...

  5. 计算机二级考试模拟表单答题,2016年计算机二级考试《VFP》模拟简答试题

    1[简答题]1.建立一个表单文件myform,将employee表添加到表单的数据环境中,然后在表单中添加表格控件gridl,指定其记录源类型为"别名".记录源为employee表 ...

  6. 计算机组成原理与应用,计算机组成原理简答与应用

    简答与应用 1.何谓中断?? 中断是由外围设备或其他非预期的急需处理的事件引起的,CPU暂时中断正在执行的程序,转至另一服务程序去处理这一事件,待事件处理完毕后返回原程序继续执行. 2.(不算CPU中 ...

  7. 第二章简答_微观 第二章 效用论

    第二章 效用论 效用论分为基数效用论和序数效用论 基数效用论:效用可以用基数数字来表示. 序数效用论:效用无法用数字表示,只能根据满足程度的大小进行排序. 一.基数效用论 1.效用(名词解释):指消费 ...

  8. 2021教师资格证中学科目二简答汇总分享

    如下所示: 科目二[教育知识与能力]简答汇总,免费分享,资料持续更新: 1.适用于2021年初中和高中考教师资格证的朋友: 2.标注的一级和二级重点,需重点记忆: 3.巧用口诀加以记忆. 祝顺利上岸, ...

  9. java画笑脸_java的画图运用。一个简答的笑脸程序☺

    一个简答的笑脸. 需要两个java文件 代码如下: GradeBook.java import java.awt.Color; import java.awt.Graphics; import jav ...

最新文章

  1. Unity应用架构设计(9)——构建统一的 Repository
  2. 干货丨 一文概览深度学习中的激活函数
  3. React Bind Handle的思考
  4. 深入理解DefaultMessageListenerContainer
  5. 终端模拟器编译c语言,编写你自己的Terminal emulator
  6. C语言,计算数据类型及所对应的字节数。
  7. Java中的变量分类_开发简单的Java应用
  8. C语言 semaphore
  9. flask url_for()
  10. JSP数据库操作和调用自己写的java类
  11. CSS 常见的8种选择器 和 文本溢出问题
  12. easyui tree复选框是否打钩状态_原创深度:如何利用OpenVINO工具套件监控机器操作员情绪状态(一)...
  13. 20189307《网络攻防》第五周作业
  14. windows/system32/winload.exe系统无法登录报错428的快速解决方法
  15. web前端开发基础入门篇(一)
  16. 利用阿里云服务器搭建私有云电脑(Windows 11),不受局域网限制,安卓iOS也可随时远程访问
  17. 消息事件管理(游戏人工智能编程案例精粹)
  18. 年薪15万的80后小本科:只要6分钟,告诉你少走6年弯路
  19. POP3,全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”
  20. 【App数据运营分析】

热门文章

  1. dll找不到dll electron_electron之集成node-ffi-napi
  2. python怎么读取图片文件大小_python怎么读取图片大小
  3. centos linux mysql 5.5脚本全自动源码包 编译安装
  4. Linux 查看ssh登录日志 ssh登录记录
  5. Android Studio实现通讯录项目
  6. python中find函数的使用方法_Python教程-String 字符串使用教程
  7. python中︿是什么意思_Python learning notes-0003-注释、变量、简单类型、运算符,学习,笔记...
  8. unity3d发布linux版本_密码管理器 1Password 发布第一个 Linux 测试版本
  9. 电脑练习打字软件_极速字根练习软件电脑版下载-极速字根练习软件免费版v0.1 最新版...
  10. layui php ajax分页,layui+thinkphp5.1实现分页(非动态表格)