PySpark和大数据处理初探

本文介绍了PySpark在大数据处理中的应用,包括Python中的函数式编程概念,如Lambda函数、filter()、map()和reduce(),以及集合的使用。通过PySpark的Hello World示例,展示了如何创建和操作弹性分布式数据集(RDD)。文章还讨论了Spark和PySpark的关系,强调了PySpark作为Python与Spark接口的角色,以及如何安装和运行PySpark程序。此外,提到了在本地和集群环境下运行PySpark程序的不同方法,以及将PySpark与其他工具(如Pandas和NumPy)结合使用的方式。
摘要由CSDN通过智能技术生成

由于数据量太大而不能在一台机器上进行处理这样的情况已经越来越常见了。幸运的是,已经有Apache Spark、Hadoop等技术被开发出来,去解决这个确切的问题。这些系统的强大功能可以直接在Python中使用PySpark来发掘!

有效地处理GB及以上级别的数据集是任何Python开发者都应该会的,无论你是一个数据科学家、web开发人员还是介于两者之间的任何人员。

在本教程中,你将学习:

  • 什么Python概念可以被应用于大数据
  • 如何使用 Apache Spark 和PySpark
  • 如何编写基本的PySpark程序
  • 如何在本地对小型数据集运行PySpark 程序
  • 将你的PySpark技巧应用到分布式系统的指南

免费福利: 点击这里访问《Python技巧》中的一章:这本书向你展示了Python的最佳实践和一些简单的例子,你可以立即应用这些例子来编写更漂亮的Python式代码。(https://realpython.com/pyspark-intro/ )

Python中的大数据概念

尽管Python只是一种流行的脚本语言,但是它提供了几种编程范式,比如面向数组编程、面向对象编程、异步编程等等。对于有抱负的大数据专业人士来说,函数式编程是一个特别有趣的范式。

在处理大数据时,函数式编程是一种常见的范例。以函数的方式进行编写会生成高度并行的代码。这意味着将你的代码在多个CPU上或者甚至完全不同的机器上运行要容易的多。你可以同时在多个系统上运行你的代码,这样就可以绕过单个工作站的物理内存和CPU限制。

这就是PySpark生态系统的强大功能,它允许你获取函数代码并将其自动分布到整个计算机集群中。

幸运的是,Python程序员可以在Python的标准库和内置程序中使用函数式编程的许多核心思想。你可以学习大数据处理所需的许多概念,而不必离开Python的舒适环境。

函数式编程的核心思想是数据应该由函数进行操作,而不需要维护任何外部状态。这意味着你的代码避免了全局变量,并且总是会返回新数据,而不是原地操作数据。

函数编程中的另一个常见概念是匿名函数。Python使用lambda关键字定义匿名函数,不要与AWS lambda函数相混淆。

现在你已经了解了一些术语和概念,你可以探索这些思想在Python生态系统中是如何体现的。

Lambda 函数

Python中的lambda函数是内联定义的,并且仅限于一个表达式。在使用内置的sorted()函数时,你可能已经见过lambda函数了:

PySpark和大数据处理初探

 

sorted函数的key参数会被调用来获取iteranle(迭代)中的每个项。这使得排序不区分大小写,方法是在排序之前将所有字符串变为小写。

这是lambda函数的一个常见用例,它是一些小的匿名函数,不维护任何外部状态。

Python中还存在其它常见的函数式编程函数,如filter()、map()和reduce()。所有这些函数都可以使用lambda函数或使用def以类似的方式定义的标准函数。

filter(), map()和 reduce()

内置的filter()、map()和reduce()函数在函数式编程中都很常见。你很快就会看到,这些概念可以构成一个PySpark程序功能的重要部分。

在一个核心Python上下文中理解这些函数非常重要。然后,你就可以将这些知识转换为PySpark程序和Spark API。

filter()根据条件过滤一个iterable,通常会被表示为一个lambda函数:

PySpark和大数据处理初探

 

filter()接受一个iterable,对每个项调用lambda函数,并返回lambda返回True的项。

注意: 调用list()是必需的,因为filter()也是一个迭代. filter()只在你循环遍历它们时才给出值。list()会将所有项强制载入内存,而不是必须使用一个循环。

你可以想象使用filter()去替换一个常见的for循环模式,如下所示:

PySpark和大数据处理初探

 

这段代码会收集所有少于8个字符的字符串。代码比filter()示例更冗长,但是它执行的是相同的函数,得到是相同的结果。

filter()的另一个不太明显的好处是,它会返回一个iterable。这意味着filter()并不需要你的计算机有足够的内存来同时保存iterable中的所有项。随着大数据集快速增长成几GB大小,这一点变得越来越重要。

map()类似于filter(),它也会对一个iterable中的每个项应用一个函数,只不过它总是生成原始项的一个1对1映射。map()返回的新iterable总是具有与原始iterable相同的元素数量,而filter()则不是这样:

PySpark和大数据处理初探

 

map()会在所有的项上自动调用lambda函数,有效地替换了一个for循环,如下所示:

PySpark和大数据处理初探

 

for循环的结果与map()示例相同,后者中收集了所有项的大写形式。但是,与filter()示例一样,map()会返回一个iterable,这再次使得它可以处理无法

About This Book, Learn why and how you can efficiently use Python to process data and build machine learning models in Apache Spark 2.0Develop and deploy efficient, scalable real-time Spark solutionsTake your understanding of using Spark with Python to the next level with this jump start guide, Who This Book Is For, If you are a Python developer who wants to learn about the Apache Spark 2.0 ecosystem, this book is for you. A firm understanding of Python is expected to get the best out of the book. Familiarity with Spark would be useful, but is not mandatory., What You Will Learn, Learn about Apache Spark and the Spark 2.0 architectureBuild and interact with Spark DataFrames using Spark SQLLearn how to solve graph and deep learning problems using GraphFrames and TensorFrames respectivelyRead, transform, and understand data and use it to train machine learning modelsBuild machine learning models with MLlib and MLLearn how to submit your applications programmatically using spark-submitDeploy locally built applications to a cluster, In Detail, Apache Spark is an open source framework for efficient cluster computing with a strong interface for data parallelism and fault tolerance. This book will show you how to leverage the power of Python and put it to use in the Spark ecosystem. You will start by getting a firm understanding of the Spark 2.0 architecture and how to set up a Python environment for Spark., You will get familiar with the modules available in PySpark. You will learn how to abstract data with RDDs and DataFrames and understand the streaming capabilities of PySpark. Also, you will get a thorough overview of machine learning capabilities of PySpark using ML and MLlib, graph processing using GraphFrames, and polyglot persistence using Blaze. Finally, you will learn how to deploy your applications to the cloud using the spark-submit command., By the end of this book, you will have established a firm understanding of the Spark Python API and how it can be used t
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值