如何在Spark键值对数据中,对指定的Key进行输出/筛选/模式匹配
在用键值对RDD进行操作时,经常会遇到不知道如何筛选出想要数据的情况,这里提供了一些解决方法
1、对固定的Key数据进行查询
代码说明:
- SparkConf:配置 Spark 应用程序的一些基本信息。
- SparkContext:创建 Spark 上下文以在 Spark 中执行操作。
- parallelize:生成一个包含多个键值对的初始 RDD。
- filter:使用
filter方法筛选出 key 等于指定值的元素。 - collect:收集结果并在驱动程序上进行输出。
- 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数据进行模糊查询
代码说明:
- SparkConf 和 SparkContext:与之前示例相同,用于初始化 Spark 应用。
- parallelize:生成一个包含多个键值对的初始 RDD。
- filter:使用 Scala 的模式匹配功能来筛选出以字母
'a'开头的 keys。case (key, _) if key.startsWith("a"):当 key 以'a'开头时,返回true,否则返回false。
- collect:收集结果并在驱动程序上进行输出。
- 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进行输出/筛选/模式匹配的更多相关文章
- JAVA整合Redis使用redisTemplate清除库中的所有键值对数据
JAVA整合Redis使用redisTemplate清除库中的所有键值对数据,清除所有缓存数据 Set<String> keys = redisTemplate.keys("*& ...
- Spark 键值对RDD操作
键值对的RDD操作与基本RDD操作一样,只是操作的元素由基本类型改为二元组. 概述 键值对RDD是Spark操作中最常用的RDD,它是很多程序的构成要素,因为他们提供了并行操作各个键或跨界点重新进行数 ...
- Android系统编程入门系列之应用内键值对数据的简单保存
在应用程序间及与用户的通信交互过程中,会产生并传递一系列数据.针对这些数据,有部分是只在应用程序中使用的缓存数据,还有一部分是在不同位置多次或长时间使用的持久化数据. 对于缓存数据来说,通常以代码中定 ...
- Spark基础:(三)Spark 键值对操作
1.pair RDD的简介 Spark为包含键值对类型的RDD提供了一些专有的操作,这些RDD就被称为pair RDD 那么如何创建pair RDD呢? 在不同的语言中有着不同的创建方式 在pytho ...
- SharedPreferences使用(通过键值保存数据)
保存数据到SharedPreferences中 要想使用SharedPreferences来存储数据, 首先需要获取到SharedPreferences对象. Android中主要提供了三种方法用于得 ...
- C# 键值对数据排序
对于键值对的数据进行排序方法总结. /*使用排序字典,默认只支持升序 SortedDictionary<DateTime, String> dd = new SortedDictionar ...
- JavaScript获取Django模板中指定键值的数据,使用过滤器
Django中利用js来操作数据的常规操作一般为点(.)操作符来获取字典或列表的数据,一般如{{data.0}},{{data.arg}} 但有时如果数据是嵌套类型的数据时,直接获取某个值就变得困难了 ...
- MyBatis返回Map键值对数据
List<Map<String, String>> getMtypeList(); <select id="getMtypeList" resultT ...
- 利用 v-html 将后台数据中的换行符在页面输出
在拿到后台传入的数据时:有些换行符,空格等会直接输出在页面 (/n .<br/> 等) 用 v-html 来解决: <div v-html="message" ...
- 【原】Learning Spark (Python版) 学习笔记(二)----键值对、数据读取与保存、共享特性
本来应该上周更新的,结果碰上五一,懒癌发作,就推迟了 = =.以后还是要按时完成任务.废话不多说,第四章-第六章主要讲了三个内容:键值对.数据读取与保存与Spark的两个共享特性(累加器和广播变量). ...
随机推荐
- CF208E 题解
Blood Cousins 前置知识:线段树合并. 我们先把题目转化一下.这里先设 \(v\) 的 \(p\) 级祖先为 \(u\),事实上要求的东西就是 \(u\) 的 \(p\) 级后代的个数减 ...
- VUE—CLI学习
https://cli.vuejs.org/zh/guide/creating-a-project.html#vue-create 需要的自己来看吧 关于旧版本 Vue CLI 的包名称由 vue-c ...
- Camera | 11.瑞芯微摄像头采集图像颜色偏绿解决笔记
前言 在实际调试基于瑞芯微平台的camera过程中,发现显示的图片发绿, 现在把调试步骤分享给大家: 1.修改iq文件 sdk中位置: @external/camera_engine_rkaiq/iq ...
- 充分利用HarmonyOS NEXT:开发者的全功能指南
随着技术的不断进步,开发者们面临着如何在复杂的技术环境中创造出卓越应用的挑战.在当今的科技浪潮中,如何抓住创新的机遇?HarmonyOS NEXT的发布,带来了全新的机遇和功能.本文将探讨开发者如何充 ...
- mvn install 设定下载的依赖保存的地址
mvn clean install -P jdk-1.8 -Dmaven.repo.local=/xxxx/repository
- 在 Web 中判断页面是不是刷新
在 Web 开发中,我们经常需要区分用户是否通过刷新操作重新加载了页面.这一操作可能是由用户手动刷新(如按下 F5 键或点击浏览器刷新按钮)或通过浏览器自动重新加载.判断页面是否刷新有助于开发者优化用 ...
- vuejs怎样封装一个插件(以封装vue-toast为例扩展)
插件介绍 插件通常会为 Vue 添加全局功能.插件的范围没有限制--一般有下面几种: 1.添加全局方法或者属性,如: vue-custom-element 2.添加全局资源:指令/过滤器/过渡等,如 ...
- Go runtime 调度器精讲(五):调度策略
原创文章,欢迎转载,转载请注明出处,谢谢. 0. 前言 在 第四讲 我们介绍了 main goroutine 是如何运行的.其中针对 main goroutine 介绍了调度函数 schedule 是 ...
- Element——前端样式美化
Element 简介 Element 快速入门 https://element.eleme.cn/#/zh-CN/component/button Element 布局 ht ...
- Scala编程语言基本常识
本文参考来源: Scala编程语言基本常识 – 萌面人博客 一 基本常识 Scala被称为大数据的黄金语言,它的发明人是马丁奥德斯基(Martin Odersky) 2001年诞生,融合了Ja ...