Pyspark教程--初学者的参考[有5个简单的例子]

993 阅读9分钟

这篇文章是关于最著名的框架库Pyspark的整体和唯一。对于大数据和数据分析,Apache Spark是用户的选择。这是由于它的一些很酷的功能,我们将讨论。但是在这之前,让我们先了解一下PySpark的不同部分,首先是大数据,然后是Apache Spark。

还可以阅读。PyGame教程。Python中的图形化Hi-Lo游戏

什么是大数据?

在这个网络时代,每一条信息都可以在社交媒体、新闻和其他大型电信媒体上找到。就在几年前,这是不可能的。所有的东西都保存在文件或实物纸质记录中。但今天,这已经很容易了。为此,我们都有意或无意地产生了大量的数据,需要大量的实时处理和分析。

因此,从技术的巢穴中,出现了一个新的领域,那就是--大数据。

这个术语通过名字本身来定义-- 大量的数据可用.但是,为什么会出现它的需求呢?因为通过对现有资源的高级研究,可以对未来进行预测。许多大公司和科技巨头都在投资大数据工程师。他们可以每天管理和维护关键和巨大的信息。但是,只是我们都知道,要做到这一点,我们需要一些工具和技术。


什么是Apache Spark?

Apache spark是一个来自Data Bricks的网络框架**。它是为数据管理** 的唯一目的而开发的**。** 这是大数据最相关的引擎之一**。**以下是它的特点。

  1. 免费和开放源代码。 它是免费使用的,开发者有300多家公司为它的发展做出贡献。
  2. 更快和稳定。考 虑到其速度比任何其他引擎如Hadoop快100倍。
  3. 简单而强大: 它对我们来说很简单,可以实现各种数据分析技术。
  4. 跨平台。适 用于所有的操作系统。
  5. 多语言支持。我 们可以使用Java、Python、R、Scala和SQL进行专有使用。
  6. 复杂的数据操作处理。有能力分析最复杂的数据。
  7. **巨大的社区支持。**它有世界范围的开发者支持。

同时,它有四套主要的库和其他第三方库。

  1. SQL和DataFrames。
  2. Spark Streaming。
  3. MLib(机器学习)。
  4. GraphX

主要的第三方库包括:C#/.NET、Groovy、Kotlin、Julia和Clojure的额外支持。云支持包括IBM、亚马逊AWS和其他。欲了解更多信息,请阅读以下的文档 链接.

什么是Pyspark?

Pyspark是Apache Spark对Python的一个著名扩展。它是一个开源的库,主要集中在。

  1. 机器学习
  2. 专有的数据分析。
  3. 数据科学
  4. 使用Python和支持性库的大数据。

由于广泛的贡献和开发人员的支持,它已经成为最稳定和最适合的特殊模型构建包。在这个框架下开发的模型往往能给出更准确和快速的结果。

这是更有用的,因为它总是得到API的支持。 要了解更多关于它的信息,请访问这个 链接.在把它们添加到系统中之前,我们必须考虑依赖性。

系统要求。

  1. Python版本Python 3.6及以上版本
  2. 操作系统。Windows 7及以上版本。
  3. 其他库支持。N umpy、Pandas等。
  4. 一个稳定的互联网连接是必须的。

如何在Windows中设置PySpark?

按照以下步骤将Pyspark安装到你的系统中。

  1. 进入pypi.org/project/pys…,在那里你可以找到这个项目的文档。
  2. 那里还给出了通过pip命令进行安装的链接。
  3. 进入命令提示符,输入这个命令。
pip install pyspark

通过pip命令在Anaconda环境下安装Pyspark。

注意:默认环境是Anaconda,所以所有通过pip安装的库也只被添加到Anaconda中。

最重要的是要确认它已经成功地被添加到我们的系统中,打开任何一个Python IDE并尝试导入它。如果它没有出现任何错误,那么我们就可以开始下一步的工作了。

通过IDLE配置Pyspark

开始使用PySpark

我们需要一个样本数据集来处理和使用Pyspark。这是一个快速入门指南,我们将涵盖基础知识。

环境。Anaconda

IDE。Jupyter Notebooks

使用的数据集:titanic .csv

在Pyspark中首先要创建的最重要的东西是一个会话。会话是一个参考框架,我们的spark应用就在其中。我们创建的会话封装了我们从开始到最后的检查点的进展。我们通过spark的SQL模块 来创建它。

1.创建一个会话

让我们从使用PySpark的最基本部分开始--创建会话。下面的代码可以用来设置你的第一个会话。

代码。

import pyspark # importing the module

from pyspark.sql import SparkSession # importing the SparkSession module
session = SparkSession.builder.appName('First App').getOrCreate() # creating a session

session # calling the session variable

在Jupyter笔记本的Pyspark中创建一个会话

2.读取Spark中的数据集

当我们谈论一个数据集时,它是由大量的数据和记录组成的行-列格式的集合。它们可以是数以千计的,也可以是更多的。

具体来说,它们是我们称之为数据预处理过程的一个重要方面。为了预测一些输出或结果,我们需要对这些数据进行预处理,进行额外的操作和情感分析。为此,Python提供了特定的模块或库。

一般来说,我们使用 Pandas库来实现这一目的。但是,PySpark有其子模块,可以减少我们导入其他库的工作量。因此,它有read()方法。这个方法有许多子方法用于不同的文件扩展名和格式。这些是以下内容。

  1. csv
  2. 格式
  3. jdbc
  4. 加载
  5. 选项
  6. 选项
  7. orc
  8. 脚本
  9. 模式
  10. 文本

我们使用的是以**.csv**为扩展名的泰坦尼克号数据集,所以我们将使用第一种方法。

代码。

data = session.read.csv('Datasets/titanic.csv') # reading the dataset through the given path
data # calling the variable for column created


读取titanic.csv数据集。

我们创建的会话是这段代码的主要方法。然后,读取方法和扩展方法用点运算符来进行。

使用show()方法来检查数据集的所有列和行。如果数据集太大,这将检索出前20行。

data.show()

检索数据集

现在我们可以看到,这个数据集的呈现方式并不恰当。列名没有整齐地显示出来。所以,我们需要对它进行一些修改。read.option()方法使我们的工作变得简单。这将帮助我们检索带有标题的数据集。

代码。

data = session.read.option.('header', 'true').csv('Datasets/titanic.csv') 
data

输出。

检索数据集的标题

现在,如果我们检查我们的数据集,那么它的视图是这样的。

获取新的格式化的数据集

现在我们已经准备好了我们的数据集,让我们来获取一些关于它的列的信息。在pandas中,我们只需使用info() 方法就可以做到这一点。在Pyspark中,**printSchema()**是读取并给出每一列信息值的方法。

代码。

data.printSchema()

数据集的信息

默认情况下,Pyspark以字符串的形式读取所有的数据集。因此,为了处理这个问题,我们需要激活一个参数,即inferSchema。它将读取所有主要的列以及它们各自的数据类型并返回相应的信息。

data = session.readoption('header', 'true').csv('Datasets/titanic.csv', inferSchema = True)

data.printSchema() 

确切的数据类型

3.数据预处理

Pyspark中的数据预处理是非常简单的。该库为我们提供了特定的函数来执行此类任务。在此涉及到以下活动。

  1. 选择一个特定的列
  2. 选择多个列
  3. 添加一列
  4. 删除一列
  5. 重命名一列
  6. 丢弃空值

要选择一个或多个列,select()函数可以完美地工作。其语法是

dataframe.select(column_name) # selecting one column
dataframe.select(column_1, column_2, .., column_N) # selecting many columns

输出。

选择一列

选择多列

要在数据框架中添加一个列,withColumn()函数可以做到这一点。它需要两个参数

  1. 要添加的新列名
  2. 现有的列名(如果新的列与现有的列无关,则不需要)。

代码。

# adding columns in dataframe
data = data.withColumn('Age_after_3_y', data['Age']+3)

我们要在数据框架中增加一个三年后的年龄列。所取的Age列是一个现有的列。通过它,我们将计算出三年后乘客的年龄。

输出。

在数据集中添加一个新列

我们可以看到,在最后添加了一个新的列。它的名字是。3年后的年龄(Age_after_3_y)。

4.删除数据集中的列并删除空值

Pyspark中的删除是我们可以执行的最简单的任务。因为它给了我们那么多的灵活性和适应性。drop()函数执行了删除列的任务。这方面的语法很简单。

# dropping the columns
dataframe = dataframe.drop('column_name in strings')
dataframe.show()

我们将删除我们之前添加到数据集中的Age_after_3_y列。

代码。

# dropping the columns
data = data.drop('Age_after_3_y')
data.show()

删除数据集中的一个列

重命名列是一个比较容易的任务。withColunRenamed()函数可以帮助我们完成这个任务。它需要两个参数

  1. 列的新名称。
  2. 列的现有名称

举个例子,我们将把数据集中的Fare 列的名称改为Price

代码。

# renaming the columns
data = data.withColumnRenamed('Fare', 'Price')
data.show()

改变列名

为了删除空值,我们使用带有drop()属性的na函数。一般来说,它会删除所有有空值的行。但是,在这个函数中有两个参数,我们可以用新的方式来删除。

  1. how:确保根据分配给的值来丢弃数值。值是任何所有。当**how = "any "**时,只有具有空值的单元格被删除,但是,当 **how = "all "**时,整个行被删除。
  2. 阈值: 以整数的形式取值。例如:如果我们设置阈值=2,只有两个空值被删除。
  3. **subset:**这有助于我们选择需要删除空值的特定列。

代码。

data = data.na.drop(how = 'any', thresh = 2)
data.show()

丢弃空值

因此,我们放弃了两个空值。

5.Pyspark的过滤操作

过滤掉一些东西,就是简单地从我们的数据框架中检索出我们需要的东西。 例如,如果我们需要泰坦尼克号数据集中那些幸存的人。筛选是这里最好的选择。

代码。

data = data.filter(data['Survived'] == 1)
data.show()

输出。

过滤掉的列

这样,所有幸存下来的人的数据就在我们面前了。

结论

这样,Pyspark的主题就结束了。我们涵盖了将spark添加到我们的系统、数据读取、预处理和过滤技术等主题。这都是关于Pyspark 的基本介绍,一般来说。