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之间的相互转换,在这里就不多说了,前面已经专门有说过,可以再去看看!