【问题标题】:Can I convert pandas dataframe to spark rdd?我可以将熊猫数据框转换为 spark rdd 吗?
【发布时间】:2015-06-20 13:27:45
【问题描述】:

铅:

a) 将本地文件读入 Panda 数据帧,例如 PD_DF b) 操作/按摩 PD_DF 并将列添加到数据框 c) 需要使用 spark 将 PD_DF 写入 HDFS。我该怎么做?

【问题讨论】:

  • 为什么不直接将本地文件读入 Spark 数据帧?
  • 正如我所说,我想在使用 spark 将数据写入 HDFS 之前使用 pandas DF 来操作数据。不确定 spark 数据框是否支持 pandas 数据框支持的所有功能

标签: pyspark


【解决方案1】:

您可以使用SQLContext 对象来调用createDataFrame 方法,该方法接受输入data,该输入可以是Pandas 的DataFrame 对象。

【讨论】:

  • 我知道这个选项。但是尝试查看是否有直接的方法将 DF 转换为 RDD 而无需创建 schemaRDD。
  • schemaRDD 在 Spark 1.3 中已被 DataFrames 取代。如果您不希望您的 RDD 元素成为 Row 实例,请致电 df.rdd.map(lambda x: [e for e in x])。虽然我真的不明白你为什么想要那个。你想保存成什么格式?
  • 计划是从 NFS 读取一个 csv 文件,并在使用 panda df 操作后,将其交换为 spark rdd 并将其写入 hdfs 中的 avro/parquet 文件。另外,spark DF 是否支持 pandas DF 目前支持的所有功能?
  • 来自spark.apache.org/docs/latest/api/python/…的文档,当schema为None时,它会尝试从数据中推断出schema(列名和类型),数据应该是Row的RDD,或者namedtuple,或者dict。
【解决方案2】:

假设dataframe 的类型是 pandas.core.frame.DataFrame 然后在 spark 2.1 - Pyspark 我这样做了

rdd_data = spark.createDataFrame(dataframe)\
                .rdd

如果您想重命名任何列或仅选择几列,请在使用 .rdd 之前进行操作

希望它也对你有用。

【讨论】:

    【解决方案3】:

    我使用 Spark 1.6.0。首先将 pandas 数据帧转换为 spark 数据帧,然后再将 spark 数据帧 spark rdd

    sparkDF = sqlContext.createDataFrame(pandasDF)
    sparkRDD = sparkDF.rdd.map(list)
    type(sparkRDD)
    pyspark.rdd.PipelinedRDD
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      相关资源
      最近更新 更多