摘要:一、RDD分区器 ### 以下RDD分别是否有分区器,是什么类型的分区器 scala> val rdd1 = sc.textFile("/wcinput/wc.txt") rdd1: org.apache.spark.rdd.RDD[String] = /wcinput/wc.txt MapPart
阅读全文
摘要:一、广播变量 ### 广播变量 ~~~ 有时候需要在多个任务之间共享变量,或者在任务(Task)和Driver Program之间共享变量。 ~~~ 为了满足这种需求,Spark提供了两种类型的变量: ~~~ 广播变量(broadcast variables) ~~~ 累加器(accumulator
阅读全文
摘要:一、RDD累加器 ### 累加器 ~~~ 累加器的作用:可以实现一个变量在不同的 Executor 端能保持状态的累加; ~~~ 累计器在 Driver 端定义,读取;在 Executor 中完成累加; ~~~ 累加器也是 lazy 的,需要 Action 触发;Action触发一次,执行一次,触发
阅读全文
摘要:一、RDD的分区 ### RDD分区 ~~~ spark.default.parallelism:(默认的并发数)= 2 ~~~ 当配置文件spark-default.conf中没有显示的配置,则按照如下规则取值: 二、RDD分区示例 ### 本地模式 ~~~ # spark-shell --mas
阅读全文
摘要:一、RDD持久化/缓存 ### 涉及到的算子:persist、cache、unpersist;都是 Transformation ~~~ 缓存是将计算结果写入不同的介质, ~~~ 用户定义可定义存储级别(存储级别定义了缓存存储的介质,目前支持内存、堆外内存、磁盘); ~~~ 通过缓存,Spark避免
阅读全文
摘要:一、RDD容错机制Checkpoint ### 涉及到的算子:checkpoint;也是 Transformation ~~~ Spark中对于数据的保存除了持久化操作之外,还提供了检查点的机制; ### 检查点本质是通过将RDD写入高可靠的磁盘,主要目的是为了容错。检查点通过将 ~~~ 数据写入到
阅读全文
摘要:一、RDD编程高阶 ### Spark原理:序列化 ~~~ 在实际开发中会自定义一些对RDD的操作,此时需要注意的是: ~~~ 初始化工作是在Driver端进行的 ~~~ 实际运行程序是在Executor端进行的 ~~~ 这就涉及到了进程通信,是需要序列化的。 二、RDD序列化代码实现 ### 可以
阅读全文
摘要:一、RDD依赖关系 ### RDD依赖关系 ~~~ RDD只支持粗粒度转换,即在大量记录上执行的单个操作。 ~~~ 将创建RDD的一系列Lineage(血统)记录下来,以便恢复丢失的分区。 ~~~ RDD的Lineage会记录RDD的元数据信息和转换行为, ~~~ 当该RDD的部分分区数据丢失时,可
阅读全文
摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文
摘要:一、算子综合案例:Super WordCount ### Super WordCount ~~~ 要求:将单词全部转换为小写,去除标点符号(难),去除停用词(难); ~~~ 最后按照count 值降序保存到文件, ~~~ 同时将全部结果保存到MySQL(难);标点符号和停用词可以自定义。 ~~~ 停
阅读全文
摘要:一、算子综合案例&找共同好友 ### 找共同好友 ~~~ 第一列表示用户,后面的表示该用户的好友 ~~~ # 原始数据: 100, 200 300 400 500 600 200, 100 300 400 300, 100 200 400 500 400, 100 200 300 500, 100
阅读全文
摘要:一、算子综合案例:计算圆周率:计算圆周率说明 二、编程代码实现 ### 编程代码实现 package cn.yanqi.sparkcore import org.apache.spark.{SparkConf, SparkContext} import scala.math.random objec
阅读全文
摘要:一、算子综合案例:广告数据统计 ### 广告数据统计 ~~~ 数据格式:timestamp province city userid adid 时间点 省份 城市 用户 广告 ### 广告数据统计案例需求 ~~~ 需求: 1、统计每一个省份点击TOP3的广告ID 2、统计每一个省份每一个小时的TOP
阅读全文
摘要:一、输入与输出 ### 文件输入与输出:文本文件 ~~~ 数据读取:textFile(String)。可指定单个文件,支持通配符。 ~~~ 这样对于大量的小文件读取效率并不高, ~~~ 应该使用 wholeTextFilesdef wholeTextFiles(path: String, minPa
阅读全文
摘要:一、算子综合应用案例:wordCount-scala ### WordCount - scala package cn.yanqi.sparkcore import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkC
阅读全文
摘要:一、算子综合案例wordcount-java ### WordCount - java ~~~ Spark提供了:Scala、Java、Python、R语言的API;对 Scala 和 Java 语言的支持最好; ### 源码地址说明 ~~~ 地址:https://spark.apache.org/
阅读全文
摘要:一、Key-Value RDD操作 ### Key_Value RDD操作 ~~~ RDD整体上分为 Value 类型和 Key-Value 类型。 ~~~ 前面介绍的是 Value 类型的RDD的操作, ~~~ 实际使用更多的是 key-value 类型的RDD,也称为 PairRDD。 ~~~
阅读全文
摘要:一、Action ### Action 用来触发RDD的计算,得到相关计算结果; ~~~ Action触发Job。一个Spark程序(Driver程序)包含了多少 Action 算子,那么就有多少Job; ~~~ 典型的Action算子: collect / count ~~~ collect()
阅读全文
摘要:一、设置spark-standalone集群非HA模式 ### 修改配置文件 [root@hadoop02 ~]# vim $SPARK_HOME/conf/spark-env.sh export JAVA_HOME=/opt/yanqi/servers/jdk1.8.0_231 export HA
阅读全文
摘要:一、Transformation【重要】 ### Transformation:RDD的操作算子分为两类: ~~~ Transformation:用来对RDD进行转化,这个操作时延迟执行的(或者说是Lazy 的); ~~~ Action:用来触发RDD的计算;得到相关计算结果 或者 将结果保存的外部
阅读全文