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操作在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创建数据框。
屏幕截图
现在让我们尝试从RDD中收集元素。
a=sc.parallelize(data1)
a.collect()
这就把所有的数据收集到驱动节点,然后把结果显示在控制台。
屏幕截图
a.collect()[0] a.collect()[1] a.collect()[2]
上面的代码显示,我们也可以使用带索引的collect从RDD/Data Frame中选择一个选定的列数。索引被用来检索其中的元素。
屏幕截图
采集较大的数据会导致内存异常;重点是如果需要采集的数据超过了集群的内存。
让我们试着用更多的例子来理解这个问题:-
data3 = sc.parallelize(data2)
data2 = [1,2,3,4,5,6,7,8,9,10] data3 = sc.parallelize(data2)
data3.collect()
这是一个非常简单的方法来了解更多关于收集的信息,我们已经做了一个简单的Int类型的RDD。在收集之后,我们可以将数据作为一个结果返回到驱动内存。所有的数据帧都被调用回驱动程序,并显示出结果。一旦数据可用,我们就可以为我们的目的使用这些数据,进行数据分析和数据建模。
屏幕截图:-
这些是PySpark中PYSPARK ROW函数的一些例子。
注意:-
- COLLECT是PySpark中的一个动作。
- COLLECT收集的数据返回到驱动节点。
- PySpark COLLECT返回的类型是Array[Row]。
- COLLECT可以将数据返回到内存中,所以过多的数据收集会导致Memory问题。
- PySpark COLLECT导致数据在网络上的移动,并将其带回驱动内存。
- COLLECTASLIST()用于收集同样的数据,但结果是List。
总结
从上面的文章中,我们看到了PySpark中收集操作的使用。我们试图从各种例子和分类中理解PySpark中的COLLECT方法是如何工作的,以及在编程层面的使用。
我们还看到了PySpark数据框架中Collected的内部工作和优势,以及它在各种编程目的中的使用。此外,语法和例子帮助我们准确地理解了这个功能。