10-用PySpark建立第一个Spark RDD

目录

    • RDD概念
    • RDD特点
    • 建立RDD的方式
    • 不同工具建立RDD的方式
      • 使用PySpark Shell(交互环境)建立RDD
      • 使用VSCode编程建立RDD
      • 使用Jupyter Notebook建立RDD
    • 总结


PySpark实战笔记系列第一篇


RDD概念

Apache Spark的核心组件的基础是RDD。所谓的RDD,即弹性分布式数据集(Resiliennt Distributed Datasets),基于RDD可以实现Apache Spark各个组件在多个计算机组成的集群中进行无缝集成,从而能够在一个应用程序中完成海量数据处理。

RDD特点

  • 只读不能修改:只能通过转换操作生成一个新的RDD。
  • 分布式存储:一个RDD通过分区可以分布在多台机器上进行并行数据处理。
  • 内存计算:可以将全部或部分数据缓存在内存中,且可在多次计算过程中重用。
  • 具有弹性:在计算过程中,当内存不足时,可以将一部分数据落到磁盘上处理

建立RDD的方式

  • 用parallelize方法建立RDD:这种方式非常简单,主要用于进行练习或者测试
  • 用range方法建立RDD:这种方式和parallelize方法类似,一般来说主要用于进行测试
  • 使用textFile方法建立RDD:这种方式一般用于在本地临时性地处理一些存储了大量数据的文件。它依赖本地文件系统,因此可以不需要Hadoop环境。
  • 使用HDFS建立RDD:这种方式使用HDFS文件建立RDD,需要依赖Hadoop集群环境,它应该是最常用的一种生产环境下的数据处理方式。它可以针对HDFS上存储的海量数据,进行离线批处理操作。

不同工具建立RDD的方式

使用PySpark Shell(交互环境)建立RDD

在安装完成Spark环境后,就具备了Shell这款工具。其中,Spark Shell是针对Scala语言的,而PySpark Shell则是针对Python语言的。

使用PySpark Shell工具的方式,在命令行输入如下命令:pyspark

PySpark Shell默认会自动创建sc对象和spark对象,因此可以在交互环境中直接进行调用,而无须手动创建。这里,sc对象是SparkContext的实例,而spark对象是SparkSession的实例。

使用VSCode编程建立RDD

在VSCode中以编程方式需要手动创建SparkContext实例。

  • 首先需要用from pyspark import SparkConf, SparkContext导入SparkConf和SparkContext。
  • conf=SparkConf().setAppName(“WordCount”).setMaster("local[**]")**创建了一个SparkConf实例,其中用setAppName设置了本次程序的名称,用setMaster设置了Spark Master的方式为local[]。
  • **sc=SparkContext(conf=conf)**创建SparkContext实例sc,这与PySparkShell默认创建的sc对象类似。
  • SparkContext不能一次运行多个,否则会报ValueError: Cannot run multipleSparkContexts at once; existing SparkContext的错误。因此需要用sc.stop()命令关闭SparkContext实例对象。

需要用pip3 install findspark命令安装findspark,否则可能会提示无法找到pyspark模块的错误:ModuleNotFoundError: No module named ‘pyspark’。

示例界面:

使用Jupyter Notebook建立RDD

编码方式类似VS Code,不过它的好处是

  • 可以对多个代码以文件的形式进行组织,
  • 可以用于编写文档。
  • 更高级的是可以显示图形和运算结果。
  • 因此使用这种基于Web的部署方式,可以让多个客户端同时使用,且可共享代码示例,真正做到图文并茂地进行编程。

总结

** 1.sc对象的两种创建方式:**

"""
方式一:通过SparkConf创建
"""
from pyspark import SparkConf,SparkContext
# 创建SparkContext,即sc对象
conf = SparkConf().setAppName("Demo")\
				  .setMaster("local[*]")
sc = SparkContext(conf=conf)
"""
方式二:通过SparkSession创建
"""
from pyspark.sql import SparkSession
spark = SparkSession.builder \
					.master("local[*]") \
					.appName("Demo")	\
					.getOrCreate();
# 创建SparkContext,即sc对象
sc = spark.sparkContext

2.完整的常用pyspark编程开头示例

根据上述两种sc的创建方式,对应的常用的编程开头方式即在上述样例的开头,加上如下代码:

import findspark
findspark.init()

参考资料:《Python大数据处理库PySpark实战》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/517685.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣刷题 二叉树的迭代遍历

题干 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root [1,null,2,3] 输出:[1,2,3]示例 2: 输入:root [] 输出:[]示例 3: 输入:root [1] 输…

以太网布局指南

2层板 顶层走信号线以及地平面底层走信号线以及地平面信号走线应至少沿一条边被接地或接地走线包围如果使用地走线,应接本层接地平面,与上层接地平面解耦。 4层板 当信号走线被重新引用到功率平面时,在地平面和功率平面之间需要去耦电容器(0…

CSS - 你实现过0.5px的线吗

难度级别:中级及以上 提问概率:75% 我们知道在网页显示或是网页打印中,像素已经是最小单位了,但在很多时候,即便是最小的1像素,精度却不足以呈现所需的线条精度和细节。因此,为了在网页显示和网页打印中呈现更加细致的线条,为了在视觉…

回归预测 | Matlab基于CPO-GPR基于冠豪猪算法优化高斯过程回归的多输入单输出回归预测

回归预测 | Matlab基于CPO-GPR基于冠豪猪算法优化高斯过程回归的多输入单输出回归预测 目录 回归预测 | Matlab基于CPO-GPR基于冠豪猪算法优化高斯过程回归的多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab基于CPO-GPR基于冠豪猪算法优化高斯…

【C语言】猜数字小游戏(并讲解随机数相关知识)

前言 一、游戏菜单 二、游戏逻辑 1.用户选择 2.开始游戏 2.1 生成1~100的随机数 总结 前言 本文讲解使用C语言写一个猜数字小游戏(1~100),涉及到的语法为:循环、分支、随机数、函数 一、游戏菜单 一个游戏的最开始,往往是一个菜单&…

从零开始实现一个RPC框架(一)

前言 在上一篇文章中我们先列举了大致的需求,定义了消息协议。这次我们着手搭建基本的RPC框架,首先实现基础的方法调用功能。 功能设计 RPC调用的第一步,就是在服务端定义要对外暴露的方法,在grpc或者是thrift中,这一…

如何删除 iPhone 上的 iCloud 激活锁

Apple 在 iPhone 上通过不同的安全屏障来保护您的数据。 iCloud 激活锁可阻止外部人员访问您的手机。您可以通过打开“查找我的 iPhone”功能来激活此锁。 使用安全协议似乎是无害的,直到你到达门的另一边。如果您购买了带有激活锁的二手 iPhone 或忘记了 iCloud 凭…

面试经典-Spring篇

1、解释Spring框架中bean的生命周期 2、单例Bean的优势

CEF的了解

(14 封私信 / 80 条消息) CEF和Electron的区别是什么? - 知乎 (zhihu.com) Electron面向的开发者:会用JavaScript,HTML,CSS,不会C CEF面向的开发者:会用JavaScript,HTML,CSS,会C (14 封私信 / 80 条消息) liulun - …

【文献分享】ALKEMIE:加速材料发现和设计的智能计算平台

题目:ALKEMIE: An intelligent computational platform for accelerating materials discovery and design 链接:DOI: 10.1016/j.commatsci.2020.110064 ALKEMIE:加速材料发现和设计的智能计算平台 摘要 通过传统的试错方式开发具有目标特性…

如何使用PL/SQL Developer工具导出clob字段的表?

1 准备测试数据 导出测试对象:表test_0102,others字段为clob类型 --创建中间表test_0101 create table test_0101( id number, name varchar2(20), others clob);--插入100条测试数据 beginfor i in 1..100 loopinsert into test_0101 values(i,i||_a,l…

利用免费的开源AI引擎:优化企业合规管理与合同审核

合同作为商业活动中的重要法律文件,其准确性、完整性和合规性对于保障企业利益至关重要。然而,传统的人工合同审核和管理过程耗时耗力,且容易出错。随着人工智能技术的发展,我们现在可以通过智能化的手段来优化合同审核和管理流程…

【MATLAB源码-第30期】基于matlab的内边界边缘检测算法。

操作环境: MATLAB 2022a 1、算法描述 在计算机视觉领域,图像分割(segmentation)指的是将数字图像细分为多个图像子区域(像素的集合)(也被称作超像素)的过程。图像分割的目的是简化…

聚酰亚胺PI材料难于粘接,用什么胶水粘接?那么让我们先一步步的从认识它开始(十八): 聚酰亚胺PI泡沫有哪些应用领域

聚酰亚胺PI泡沫有哪些应用领域 聚酰亚胺(PI)泡沫由于其一系列优异的特性,在许多高性能应用领域中都有广泛的应用,包括但不限于: 航空航天领域:聚酰亚胺PI泡沫由于其出色的耐高温、隔热和阻燃性能&#xff0…

vue2中的局部组件和全局组件

注:vue2中使用组件远没有vue3中简单,具体可以看阿耿老师的lingshi小程序 如图所示:

包装类的理解

为什么需要包装类 Java提供了两个类型系统,基本数据类型与引用数据类型。使用基本数据类型在于效率,然而当要使用只针对对象设计的API或新特性(例如泛型),怎么办呢?例如: //情况1:方…

Codeforces CodeTON Round 8(Div.1 + Div.2) A~E

A. Farmer John’s Challenge (模拟) 题意: 构造一个长度为 n n n的数组,将这些数组围成一个圈(顺时针)从任意一个位置打开,有且仅有 k k k个非降序排列的数组。 分析: k 1 k1 k1时,升序输…

网络原理 - HTTP / HTTPS(4)——构造http请求

目录 一、postman 的下载安装以及简单介绍 1、下载安装 2、postman的介绍 二、通过 Java socket 构造 HTTP 请求 构造http请求的方式有两种:(1)通过代码构造(有一点难度) (2)通过第三…

StarRocks使用Minio备份和还原

1.安装minio Centos7安装minio-CSDN博客 minio api端口&#xff1a;9090 下文用到这个端口 必须提前创建好桶: packfdv5 名称自定义和后面对上就可以 2.创建备份仓库 格式&#xff1a; CREATE REPOSITORY <repository_name> WITH BROKER ON LOCATION "s3a:/…

Java设计模式:外观模式之优雅门面(九)

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 在软件工程中&#xff0c;设计模式是解决常见设计问题的经验总结&#xff0c;它为开发者提供了一种通用的、可复用的解决方案。外…