Spark中的dataframe与Pandas中的dataframe对比/转化

〇、声明

Spark中可以运行numpy和pandas程序,只要你装了

一、为什么要将用了pandas.dataframe的程序改为Spark中的dataframe

前者只能单机运行,后者可以集群运行

二、对比

直接跳转这篇博文《Spark与Pandas中DataFrame对比》,写的很好

三、转化

spark —> pandas pandas —> spark
pandas_df = spark_df.toPandas() spark_df = spark.createDataFrame(pandas_df)

由于pandas的方式是单机版的,即toPandas()的方式是单机版的,改成分布式版本:

import pandas as pd
def _map_to_pandas(rdds):
    return [pd.DataFrame(list(rdds))]
    
def topas(df, n_partitions=None):
    if n_partitions is not None: df = df.repartition(n_partitions)
    df_pand = df.rdd.mapPartitions(_map_to_pandas).collect()
    df_pand = pd.concat(df_pand)
    df_pand.columns = df.columns
    return df_pand
    
pandas_df = topas(spark_df)

参考博文:
《spark跟pandas数据转换》
《pandas和spark的dataframe互转》

四、SparkContext在Spark2.x中被整合入SparkSession,是整个Spark的指挥台

参考博文:
《Spark 核心篇-SparkContext》
《Spark 2.0系列之SparkSession详解》

发布了131 篇原创文章 · 获赞 81 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/weixin_43469047/article/details/104010581