摘要: //@是为了给模式匹配起个变量名,一般格式为:variableName@pattern,示例: object VariableTest { def main(args: Array[String]): Unit = { val list = List(1, 2, 3, 4, 5, 6) list m 阅读全文
posted @ 2020-06-01 20:20 大葱拌豆腐 阅读(1614) 评论(0) 推荐(0) 编辑
摘要: 首先,对RDD相关的操作需要传入闭包函数,如果这个函数需要访问外部定义的变量,就需要满足一定条件(比如必须可被序列化),否则会抛出运行时异常。闭包函数在最终传入到executor执行,需要经历以下步骤: 1.driver通过反射,运行时找到闭包访问的变量,并封装成一个对象,然后序列化该对象 2.将序 阅读全文
posted @ 2020-06-01 18:48 大葱拌豆腐 阅读(464) 评论(0) 推荐(0) 编辑
摘要: 闭包的作用可以理解为:函数可以访问函数外部定义的变量,但是函数内部对该变量进行的修改,在函数外是不可见的,即对函数外源变量不会产生影响。 其实,在学习Spark时,一个比较难理解的点就是,在集群模式下,定义的变量和方法作用域的范围和生命周期。这在你操作RDD时,比如调用一些函数map、foreach 阅读全文
posted @ 2020-06-01 18:47 大葱拌豆腐 阅读(522) 评论(0) 推荐(0) 编辑
摘要: 在Spark中: driver是运行用户编写Application的main()函数的地方,具体负责DAG的构建、任务的划分、task的生成与调度等。job,stage,task生成都离不开rdd自身,rdd的相关的操作不能缺少driver端的sparksession/sparkcontext。 e 阅读全文
posted @ 2020-06-01 18:46 大葱拌豆腐 阅读(2182) 评论(0) 推荐(0) 编辑