10-用PySpark建立第一个Spark 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对象的两种创建方式:**

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

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

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

python 复制代码
import findspark
findspark.init()

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

相关推荐
Qspace丨轻空间2 小时前
气膜场馆:推动体育文化旅游创新发展的关键力量—轻空间
大数据·人工智能·安全·生活·娱乐
Elastic 中国社区官方博客3 小时前
如何将数据从 AWS S3 导入到 Elastic Cloud - 第 3 部分:Elastic S3 连接器
大数据·elasticsearch·搜索引擎·云计算·全文检索·可用性测试·aws
Aloudata4 小时前
从Apache Atlas到Aloudata BIG,数据血缘解析有何改变?
大数据·apache·数据血缘·主动元数据·数据链路
水豚AI课代表4 小时前
分析报告、调研报告、工作方案等的提示词
大数据·人工智能·学习·chatgpt·aigc
拓端研究室TRL7 小时前
【梯度提升专题】XGBoost、Adaboost、CatBoost预测合集:抗乳腺癌药物优化、信贷风控、比特币应用|附数据代码...
大数据
黄焖鸡能干四碗7 小时前
信息化运维方案,实施方案,开发方案,信息中心安全运维资料(软件资料word)
大数据·人工智能·软件需求·设计规范·规格说明书
编码小袁7 小时前
探索数据科学与大数据技术专业本科生的广阔就业前景
大数据
WeeJot嵌入式8 小时前
大数据治理:确保数据的可持续性和价值
大数据
zmd-zk9 小时前
kafka+zookeeper的搭建
大数据·分布式·zookeeper·中间件·kafka
激流丶9 小时前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic