PySpark中 collect简介及实例

1,363 阅读4分钟

PySpark collect简介

PYSPARK COLLECT是PySpark中的一个操作,用于从数据框架的节点中检索所有元素到驱动节点。它是一个用于从RDD/Data Frame中获取数据的操作。该操作涉及到获取数据并将其返回到驱动节点。

收集操作将数据作为一个行类型的数组返回给驱动;结果被收集并进一步显示给PySpark操作。这些数据一旦在节点上可用,就可以在循环中使用并显示。收集操作被广泛用于较小的数据集,这些数据在内存中可以容纳,或者也可以引起某些内存异常的帖子。让我们详细检查一下Collect操作,并尝试理解它的功能。

PySpark collect的语法

COLLECT函数的语法是:-

cd = spark.sparkContext.parallelize(data1) cd.collect()

解释

Cd:- 由数据组成的RDD

.collect ():- 用于收集RDD的函数。

屏幕截图

PySpark collect output 1

在Pyspark中收集的工作

让我们看看COLLECT操作在PySpark中是如何工作的: --

  • 收集是一个动作,它将数据集的所有元素,PySpark的RDD,返回给驱动程序。它基本上是用来从各个节点收集数据到驱动程序,然后再返回给用户进行分析。
  • 采集后的数据被保存在内存中返回,所以不建议采集大量数据。采集的数据量小的数据是可取的,或者有过滤器的数据可以进一步使用。
  • 检索巨大的数据集有时会在数据收集中引起内存不足的问题。
  • 这是一个网络移动的动作调用,所有来自不同节点的元素都被发送到收集数据的驱动内存中,所以数据移动比收集操作要多。由于它是PySpark的一个动作调用,所以每次调用时,所有的转换都是在执行其动作之前完成的。
  • 它以数组[Row]的形式将元素检索到驱动程序中。

让我们通过一些编码例子来检查其创建和使用。

PySpark收集的例子

让我们看看PYSPARK COLLECT操作的一些例子:-

让我们先在PySpark中创建简单的数据。

data1  = [{'Name':'Jhon','ID':2,'Add':'USA'},{'Name':'Joe','ID':3,'Add':'USA'},{'Name':'Tina','ID':2,'Add':'IND'},{'Name':'Jhon','ID':2, 'Add':'USA'},{'Name':'Joe','ID':5,'Add':'INA'}]

一个样本数据被创建,其字段是Name, ID, 和 ADD。

a = sc.parallelize(data1)

使用sc.parallelize创建RDD。

b = spark.createDataFrame(a)
b.show()

使用Spark.createDataFrame创建数据框。

屏幕截图

PySpark collect output 2

现在让我们尝试从RDD中收集元素。

a=sc.parallelize(data1)
a.collect()

这就把所有的数据收集到驱动节点,然后把结果显示在控制台。

屏幕截图

output 3

a.collect()[0] a.collect()[1] a.collect()[2]

上面的代码显示,我们也可以使用带索引的collect从RDD/Data Frame中选择一个选定的列数。索引被用来检索其中的元素。

屏幕截图

output 4

采集较大的数据会导致内存异常;重点是如果需要采集的数据超过了集群的内存。

让我们试着用更多的例子来理解这个问题:-

data3 = sc.parallelize(data2)
data2 = [1,2,3,4,5,6,7,8,9,10] data3 = sc.parallelize(data2)
data3.collect()

这是一个非常简单的方法来了解更多关于收集的信息,我们已经做了一个简单的Int类型的RDD。在收集之后,我们可以将数据作为一个结果返回到驱动内存。所有的数据帧都被调用回驱动程序,并显示出结果。一旦数据可用,我们就可以为我们的目的使用这些数据,进行数据分析和数据建模。

屏幕截图:-

output 5

这些是PySpark中PYSPARK ROW函数的一些例子。

注意:-

  1. COLLECT是PySpark中的一个动作。
  2. COLLECT收集的数据返回到驱动节点。
  3. PySpark COLLECT返回的类型是Array[Row]。
  4. COLLECT可以将数据返回到内存中,所以过多的数据收集会导致Memory问题。
  5. PySpark COLLECT导致数据在网络上的移动,并将其带回驱动内存。
  6. COLLECTASLIST()用于收集同样的数据,但结果是List。

总结

从上面的文章中,我们看到了PySpark中收集操作的使用。我们试图从各种例子和分类中理解PySpark中的COLLECT方法是如何工作的,以及在编程层面的使用。

我们还看到了PySpark数据框架中Collected的内部工作和优势,以及它在各种编程目的中的使用。此外,语法和例子帮助我们准确地理解了这个功能。