十一月头条:Kotlin 的排名仍然在持续上升 编程语言 Kotlin 正在取得良好进展。本月增长了 0.17%,排名从第 18 名上升到第 15 名。两个月前,当 Kotlin 进入 TIOBE 指数前 20 名时,我们已经讨论过它。Kotlin 在 2017 年迎来了第一波流行,当时 Google 宣布全面支持在 Android 上使用 Kotlin......
十五、案例实操1:统计各省点击量TOP3广告 1,需求描述 (1)我们有一个记录广告点击的日志文件 agent.log,文件内容如下(部分),其中时间戳,省份,城市,用户,广告,中间字段使用空格分隔。 (2)现要求统计出每一个省份每个广告被点击数量排行的 Top3......
十三、累加器 1,基本介绍 (1)Spark 累加器(Spark Accumulators)是一种在分布式计算环境下进行累积计算的特殊变量。在 Driver 程序中定义的变量,在 Executor 端的每个 Task 都会得到这个变量的一份新的副本,每个 task 更新这些副本的值后,传回 Driver 端进行 merge......
十一、HBase 的读取与写入 1,准备工作 (1)首先我们需要在项目的 pom.xml 文件中添加 HBase 相关依赖项。 (2)接着我们编写一段代码测试对 HBase 的数据读写操作(与 Spark 无关): import org.apache.hadoop.hbase.{HBaseConfiguration, TableName} ......
十二、文件的读取与保存 1,读取与保存文本文件 (1)使用 textFile 方法可以从本地文件系统或者分布式文件系统(HDFS)上读取文本文件,该方法返回一个 RDD 对象......
十、RDD 缓存(Cache) 1,缓存的使用 (1)缓存是指将 RDD 的计算结果存储在内存中,以便后续的重复使用。通过缓存 RDD,可以避免每次需要使用 RDD 时都重新计算,从而提高 Spark 应用程序的性能。 比如下面样例,我们分别实现了单词数量统计和单词分组这两个功能......
九、RDD 的血缘关系、依赖关系、阶段划分、任务划分 1,血缘关系 (1)RDD 只支持粗粒度转换,即在大量记录上执行的单个操作。当一个 RDD 通过一系列的转换操作生成新的 RDD 时,新的 RDD 会记录下它依赖的原始 RDD 以及转换操作的步骤,这样就形成了 RDD 之间的血缘关系......
八、序列化 1,转换操作为什么需要序列化? (1)Spark 是分布式执行引擎,其核心抽象是弹性分布式数据集 RDD,其代表了分布在不同节点的数据。Spark 的计算是在 executor 上分布式执行的,故用户开发的关于 RDD 的 map,flatMap,reduceByKey 等 transformation 操作......
十月头条:C# 越来越接近 Java C# 和 Java 之间的差距从未如此之小。目前,它们之间的差距仅为1.2%,如果保持这种趋势,C# 将在大约 2 个月的时间内超过 Java。目前在所有编程语言中,Java 的跌幅最大,为 -3.92%,而 C# 的涨幅最大......
七、行动算子 1,reduce (1)该函数用于聚集 RDD 中的所有元素,先聚合分区内数据,再聚合分区间数据。 1 def reduce(f: (T, T) => T): T (2)下面是一个 reduce 函数使用样例......