Spark中DataFrame与Pandas中DataFrame相互转换

Spark中DataFrame前面已经给大家介绍过了,以及RDD、DataSet、DataFrame之间相互转换,而PySpark可以说是Spark和python的结合体,PySpark中也使用DataFrame,也可以与RDD、DataSet之间相互转换,其实python中有个Pandas库,也有DataFrame,是由多列Series组成的数据结构,有时需要将他们相互转化才能使用。

Spark与Pandas中的DataFrame相互转换

import pandas as pd

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("test").getOrCreate()

#创建pandas DataFrame

df = pd.DataFrame([["zhangsan",25], ["lisi", 24]], columns = ["name", "age"])
#取出值,并转换成list的两种方式

value = df.values.tolist()

column = list(df.columns)

#将pandas.DataFrame 转换成 Spark.DataFrame

spark_df = spark.createDataFrame(value,column)

spark_df.show()

#将Spark.dataFrame 转换成 pandas.Dataframe

pd_df = spark_df.toPandas()

type(spark_df)

type(pd_df)

Spark DataFrame与RDD相互转换

#生成pandas.DataFrame

import pandas as pd
from pyspark.sql import SparkSession
str = {
    
    

"name": ["zhangsan", "lisi", "wangwu", "qianyi"],

"age": [22, 24, 34, 25]

}

pd_df = pd.DataFrame(str)

#将pd.DataFrame转换成spark.Dataframe

value = pd_df.values.tolist()

column = list(pd_df.columns)

spark_df = spark.createDataFrame(value, column)

spark_df.show()

#将spark.Dataframe转换成rdd

spark_rdd = spark_df.rdd

print(spark_rdd.collect())

#将rdd转换成让spark.Dataframe

sp_df = spark.createDataFrame(spark_rdd)

sp_df.show()

RDD、DataSet、DataFrame之间的相互转换,在这里就不多说了,前面已经专门有说过,可以再去看看!

猜你喜欢

转载自blog.csdn.net/zp17834994071/article/details/108644954
今日推荐