将 PySpark 数据帧转换为元组列表
在本文中,我们将把 Pyspark 数据帧转换为元组列表。
数据框中的行存储在由逗号运算符分隔的列表中。所以我们将使用嵌套列表创建一个数据框
创建用于演示的数据框:
Python3
# importing module
import pyspark
# importing sparksession from pyspark.sql module
from pyspark.sql import SparkSession
# creating sparksession and giving an app name
spark = SparkSession.builder.appName('sparkdf').getOrCreate()
# list of students data
data = [["1", "sravan", "vignan", 67, 89],
["2", "ojaswi", "vvit", 78, 89],
["3", "rohith", "vvit", 100, 80],
["4", "sridevi", "vignan", 78, 80],
["1", "sravan", "vignan", 89, 98],
["5", "gnanesh", "iit", 94, 98]]
# specify column names
columns = ['student ID', 'student NAME',
'college', 'subject1', 'subject2']
# creating a dataframe from the lists of data
dataframe = spark.createDataFrame(data, columns)
# display
dataframe.show()
Python3
# define a list
l=[]
# collect data from the dataframe
for i in dataframe.collect():
l.append(tuple(i))
# convert to tuple and append to list
# print list of data
print(l)
Python3
# convert dataframe to rdd
rdd = dataframe.rdd
# convert rdd to tuple
data = rdd.map(tuple)
# display data
data.collect()
输出:
方法一:使用 collect() 方法
通过将每一行转换为一个元组并将这些行附加到一个列表中,我们可以获得元组列表格式的数据。
tuple():用于将数据转换为元组格式
Syntax: tuple(rows)
示例:将数据帧转换为元组列表。
蟒蛇3
# define a list
l=[]
# collect data from the dataframe
for i in dataframe.collect():
l.append(tuple(i))
# convert to tuple and append to list
# print list of data
print(l)
输出:
[(‘1’, ‘sravan’, ‘vignan’, 67, 89), (‘2’, ‘ojaswi’, ‘vvit’, 78, 89),
(‘3’, ‘rohith’, ‘vvit’, 100, 80), (‘4’, ‘sridevi’, ‘vignan’, 78, 80),
(‘1’, ‘sravan’, ‘vignan’, 89, 98), (‘5’, ‘gnanesh’, ‘iit’, 94, 98)]
方法 2:将 tuple() 与 rdd 一起使用
使用 map()函数将 rdd 转换为元组,我们使用 map() 和 tuple() 函数从 rdd 转换
Syntax: rdd.map(tuple)
示例:使用 RDD
蟒蛇3
# convert dataframe to rdd
rdd = dataframe.rdd
# convert rdd to tuple
data = rdd.map(tuple)
# display data
data.collect()
输出:
[('1', 'sravan', 'vignan', 67, 89),
('2', 'ojaswi', 'vvit', 78, 89),
('3', 'rohith', 'vvit', 100, 80),
('4', 'sridevi', 'vignan', 78, 80),
('1', 'sravan', 'vignan', 89, 98),
('5', 'gnanesh', 'iit', 94, 98)]