大数据分布式计算工具Spark数据计算实战讲解(map方法,flatmap方法,reducebykey方法)

news/2024/6/18 21:55:35 标签: 大数据, spark, 分布式

 

数据计算

map方法

PySpark的数据计算,都是基于RDD对象来进行的,那么如何进行呢?

自然是依赖,RDD对象内置丰富的:成员方法(算子)

功能:map算子,是将rdd的数据一条条处理(处理的逻辑基于map算子中接收的处理函数),返回新的rdd

 

from pyspark import SparkConf, SparkContext
import os
os.environ['pyspark_python'] = "D:/python/JIESHIQI/python.exe"

#创建一个sparkconf类对象
conf = SparkConf().setMaster("local[*]").setAppName("test_spark_app")

#基于sparkconf类对象创建sparkcontext类对象
sc = SparkContext(conf=conf)

#准备一个rdd
rdd = sc.parallelize([1,2,3,4,5])
#通过map方法将全部数据都乘以10
def func(data):
    return data * 10

rdd2 = rdd.map(func)
#rdd2 = rdd.map(lambda x: x * 10)

print(rdd2.collect())

sc.stop()
#[10, 20, 30, 40, 50]

#链式调用
rdd3 = rdd2.map(lambda x: x+5)
rdd2 = rdd.map(lambda x: x * 10).map(lambda x: x + 5)
#[15, 25, 35, 45, 55]

map算子(成员方法)

  • 接受一个处理函数,可用lambda表达式快速编写

  • 对RDD内的元素逐个处理,并返回一个新的RDD

链式调用

  • 对于返回值是新RDD的算子,可以通过链式调用的方式多次调用算子。

flatmap算子

功能:对rdd执行map操作,然后进行解除嵌套操作

from pyspark import SparkConf, SparkContext
import os
os.environ['pyspark_python'] = "D:/python/JIESHIQI/python.exe"

#创建一个sparkconf类对象
conf = SparkConf().setMaster("local[*]").setAppName("test_spark_app")

#基于sparkconf类对象创建sparkcontext类对象
sc = SparkContext(conf=conf)

#准备一个RDD
rdd = sc.parallelize(["itcast sxx wyx", "qeq apple banana"])
#需求,将rdd数据里面的一个个单词提取处理
rdd2 = rdd.flatMap(lambda x: x.split(" "))
print(rdd2.collect())
sc.stop()
#['itcast', 'sxx', 'wyx', 'qeq', 'apple', 'banana']

reducebykey方法

功能:针对kv型rdd,自动按照key分组,然后根据你提供的聚合逻辑,完成组内数据的聚合操作

from pyspark import SparkConf, SparkContext
import os
os.environ['pyspark_python'] = "D:/python/JIESHIQI/python.exe"

#创建一个sparkconf类对象
conf = SparkConf().setMaster("local[*]").setAppName("test_spark_app")

#基于sparkconf类对象创建sparkcontext类对象
sc = SparkContext(conf=conf)

#准备一个rdd
rdd = sc.parallelize([('男',99),('男',66),('女',33),('女',88)])
#求男生和女生两个组的成绩之和
rdd2 = rdd.reduceByKey(lambda a,b: a+b)
print(rdd2.collect()) 
sc.stop()
#[('女', 121), ('男', 165)]

 


http://www.niftyadmin.cn/n/5397068.html

相关文章

visio、ppt、office等另存图片,如何设置更清晰

visio、ppt、office等另存图片,如何设置更清晰 选中要另存为的部分——文件——另存为——选好位置——格式选jpg——保存——按下图设置:质量100%,分辨率选打印机,大小选屏幕——确定

spark的保姆级配置教程

目录 前提准备 (一) Hadoop集群搭建 (二)Anaconda环境搭建 (三)创建pyspark环境 (四)Spark Local模式搭建 1.Spark下载、上传和解压 2.上传Spark压缩包 3.解压上传好的压缩包…

ThreadLocal“你”真的了解吗?(二)

《ThreadLocal“你”真的了解吗?(一)》这篇文章梳理了ThreadLocal的基础知识,同时还梳理了java中线程的创建方法以及这两者之间的关系,本篇文章我们将继续梳理与ThreadLocal相关,在上一节也提过的另一组件T…

ubuntu20.04安装docker及运行

ubuntu20.04安装docker及运行 ubuntu环境版本 Ubuntu Focal 20.04 (LTS) 查看系统版本 rootubuntu20043:~# cat /proc/version Linux version 5.15.0-78-generic (builddlcy02-amd64-008) (gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0, GNU ld (GNU Binutils for Ubuntu) …

【Hadoop】hive工具使用的两种方式

第一种 hive直接进入指令行 第二种 beeline -u "jdbc:hive2://xrx:10000" -n root

基于vue-office实现docx、xlsx、pdf文件的在线预览

概述 在做项目的时候会遇到docx、xlsx、pdf等文件的在线预览需求,实现此需求可以有多种解决方式,本文基于vue-office实现纯前端的文件预览。 效果 如下图,分别为docx、xlsx、pdf三种类型的文件在线加载后的效果。你也可以访问官方预览网址…

ROS 2基础概念#1:计算图(Compute Graph)| ROS 2学习笔记

在ROS中,计算图(ROS Compute Graph)是一个核心概念,它描述了ROS节点之间的数据流动和通信方式。它不仅仅是一个通信网络,它也反映了ROS设计哲学的核心——灵活性、模块化和可重用性。通过细致探讨计算图的高级特性和实…

人工智能之Tensorflow常用API

TensorFlow的计算表现为数据流图,所以tf.Graph类中包含一系列表示计算的操作对象(tf.Operation),以及在操作之间流动的数据–张量对象(tf.Tensor)。 Graph tf.Graph类包含图相关的API操作,可以在jupyter notebook导入tensorflow之后执行hel…