在用键值对RDD进行操作时,经常会遇到不知道如何筛选出想要数据的情况,这里提供了一些解决方法

1、对固定的Key数据进行查询

代码说明:

  1. SparkConf:配置 Spark 应用程序的一些基本信息。
  2. SparkContext:创建 Spark 上下文以在 Spark 中执行操作。
  3. parallelize:生成一个包含多个键值对的初始 RDD。
  4. filter:使用 filter 方法筛选出 key 等于指定值的元素。
  5. collect:收集结果并在驱动程序上进行输出。
  6. foreach:用来遍历和打印过滤后的结果。
import org.apache.spark.{SparkConf, SparkContext}

object KeyFilterExample {
def main(args: Array[String]): Unit = {
// 初始化 SparkContext
val conf = new SparkConf().setAppName("Key Filter Example").setMaster("local[*]")
val sc = new SparkContext(conf) // 创建一个示例 RDD,包含 key-value 键值对
val rdd = sc.parallelize(Seq(("a", 1), ("b", 2), ("c", 3), ("a", 4), ("b", 5))) // 定义要筛选的特定 key
val specifiedKey = "a" // 使用 filter 操作输出指定的 key 值
val filteredRdd = rdd.filter { case (key, _) => key == specifiedKey } // 输出结果
filteredRdd.collect().foreach { case (key, value) =>
println(s"Key: $key, Value: $value")
} // 停止 SparkContext
sc.stop()
}
}

2、对不固定的Key数据进行模糊查询

代码说明:

  1. SparkConfSparkContext:与之前示例相同,用于初始化 Spark 应用。
  2. parallelize:生成一个包含多个键值对的初始 RDD。
  3. filter:使用 Scala 的模式匹配功能来筛选出以字母 'a' 开头的 keys。
    • case (key, _) if key.startsWith("a"):当 key 以 'a' 开头时,返回 true,否则返回 false
  4. collect:收集结果并在驱动程序上进行输出。
  5. foreach:遍历并打印过滤后的结果。
import org.apache.spark.{SparkConf, SparkContext}

object PatternMatchingKeyExample {
def main(args: Array[String]): Unit = {
// 初始化 SparkContext
val conf = new SparkConf().setAppName("Pattern Matching Key Example").setMaster("local[*]")
val sc = new SparkContext(conf) // 创建一个示例 RDD,包含 key-value 键值对
val rdd = sc.parallelize(Seq(("apple", 1), ("banana", 2), ("apricot", 3),
("berry", 4), ("avocado", 5))) // 使用 filter 操作与模式匹配筛选以 'a' 开头的 keys
val patternMatchedRdd = rdd.filter {
case (key, _) if key.startsWith("a") => true
case _ => false
} // 输出结果
patternMatchedRdd.collect().foreach { case (key, value) =>
println(s"Key: $key, Value: $value")
} // 停止 SparkContext
sc.stop()
}
}

如何在Spark键值对数据中,对指定的Key进行输出/筛选/模式匹配的更多相关文章

  1. JAVA整合Redis使用redisTemplate清除库中的所有键值对数据

    JAVA整合Redis使用redisTemplate清除库中的所有键值对数据,清除所有缓存数据 Set<String> keys = redisTemplate.keys("*& ...

  2. Spark 键值对RDD操作

    键值对的RDD操作与基本RDD操作一样,只是操作的元素由基本类型改为二元组. 概述 键值对RDD是Spark操作中最常用的RDD,它是很多程序的构成要素,因为他们提供了并行操作各个键或跨界点重新进行数 ...

  3. Android系统编程入门系列之应用内键值对数据的简单保存

    在应用程序间及与用户的通信交互过程中,会产生并传递一系列数据.针对这些数据,有部分是只在应用程序中使用的缓存数据,还有一部分是在不同位置多次或长时间使用的持久化数据. 对于缓存数据来说,通常以代码中定 ...

  4. Spark基础:(三)Spark 键值对操作

    1.pair RDD的简介 Spark为包含键值对类型的RDD提供了一些专有的操作,这些RDD就被称为pair RDD 那么如何创建pair RDD呢? 在不同的语言中有着不同的创建方式 在pytho ...

  5. SharedPreferences使用(通过键值保存数据)

    保存数据到SharedPreferences中 要想使用SharedPreferences来存储数据, 首先需要获取到SharedPreferences对象. Android中主要提供了三种方法用于得 ...

  6. C# 键值对数据排序

    对于键值对的数据进行排序方法总结. /*使用排序字典,默认只支持升序 SortedDictionary<DateTime, String> dd = new SortedDictionar ...

  7. JavaScript获取Django模板中指定键值的数据,使用过滤器

    Django中利用js来操作数据的常规操作一般为点(.)操作符来获取字典或列表的数据,一般如{{data.0}},{{data.arg}} 但有时如果数据是嵌套类型的数据时,直接获取某个值就变得困难了 ...

  8. MyBatis返回Map键值对数据

    List<Map<String, String>> getMtypeList(); <select id="getMtypeList" resultT ...

  9. 利用 v-html 将后台数据中的换行符在页面输出

    在拿到后台传入的数据时:有些换行符,空格等会直接输出在页面   (/n .<br/> 等) 用  v-html 来解决: <div v-html="message" ...

  10. 【原】Learning Spark (Python版) 学习笔记(二)----键值对、数据读取与保存、共享特性

    本来应该上周更新的,结果碰上五一,懒癌发作,就推迟了 = =.以后还是要按时完成任务.废话不多说,第四章-第六章主要讲了三个内容:键值对.数据读取与保存与Spark的两个共享特性(累加器和广播变量). ...

随机推荐

  1. SMU Summer 2024 Contest Round 4

    SMU Summer 2024 Contest Round 4 Made Up 题意 给你三个序列 \(A,B,C\) ,问你满足 \(A_i = B_{C_j}\) 的 \((i,j)\) 对有多少 ...

  2. 和xshell和crt说再见,认识了一款55k star多端跨平台终端神器,强大酷炫

    一.Tabby简介 Tabby(以前称为Terminus)是一款高度可配置的终端仿真器.SSH 和串行客户端.开源且跨平台,支持在Windows.macOS和Linux系统下使用. 源码下载 http ...

  3. 变分信息瓶颈 (Variational Information Bottleneck) 公式推导

    互信息 互信息用于表示两个随机变量相互依赖的程度.随机变量 \(X\) 和 \(Y\) 的互信息定义为 \[\begin{aligned} I(X, Y) & = \mathrm{KL}[p( ...

  4. Tomcat的配置文件中有哪些关键的配置项,它们分别有什么作用?

    Tomcat的配置文件主要包括server.xml和web.xml,它们位于Tomcat安装目录下的conf文件夹中.今天的内容重点介绍 server.xml 文件的配置,V 哥会结合一些业务场景来介 ...

  5. 常用 DNS 查询速度测试

    测试工具 DNS-Benchmark | GitHub 总结 进过多轮测试,我认为: 223.5.5.5 和 223.6.6.6 平均响应时间最短(223.5.5.5 在教育网内疑似无法连通) 114 ...

  6. 程序员失业日记4:半个月拿下4个offer

    上篇文章很多小伙伴留言也讲到自己被公司裁员,还有的细心的小伙伴说去年九月就被裁了,在看一下文章的发布时间,绷不住了.先和大家说一下,我已经找到工作,因为最近工作一直都很忙,加上自己也比较懒,所以就拖了 ...

  7. Coursera, Big Data 5, Graph Analytics for Big Data, Week 3

    Graph Analytics 有哪些类型 node type (labels) node schema: attributes 组成了schema. 同样的, Edge也有 Edge Type 和E ...

  8. Spring —— bean生命周期

    bean生命周期 生命周期:从创建到消亡的完整过程 bean生命周期:bean从创建到销毁的整体过程 bean生命周期控制:在bean创建后到销毁前做一些事情   方式一:配置控制生命周期 <b ...

  9. SimpleAIAgent:使用免费的glm-4-flash即可开始构建简单的AI Agent应用

    SimpleAIAgent是基于C# Semantic Kernel 与 WPF构建的一款AI Agent探索应用.主要用于使用国产大语言模型或开源大语言模型构建AI Agent应用的探索学习,希望能 ...

  10. 北京智和信通 | 无人值守的IDC机房动环综合监控运维

    随着信息技术的发展和全面应用,数据中心机房已成为各大企事业单位维持业务正常运营的重要组成部分,网络设备.系统.业务应用数量与日俱增,规模逐渐扩大,一旦机房内的设备出现故障,将对数据处理.传输.存储以及 ...