【问题标题】:PySpark: Using an existing Spark DataFrame's Schema on new Spark DataFramePySpark:在新 Spark DataFrame 上使用现有 Spark DataFrame 的 Schema
【发布时间】:2020-08-10 12:29:04
【问题描述】:

在 Python 中,我有一个包含 135~ 列的现有 Spark DataFrame,称为 sc_df1。我还有一个 Pandas DataFrame,其中包含我想转换为 Spark DataFrame 的完全相同的列,然后是 unionByName 两个 Spark DataFrame。即sc_df1.unionByName(sc_df2)

有谁知道在将 Pandas DataFrame 转换为 Spark DataFrame 时如何使用sc_df1 的架构,以便两个 Spark DataFrame 在联合时具有相同的架构?

我知道这行不通,但下面基本上是我想要做的:

sc_df2 = sc.createDataFrame(df2, schema = sc_df1.dtypes)

【问题讨论】:

  • 使用sc_df1.schema 有效吗?

标签: pandas dataframe apache-spark pyspark


【解决方案1】:

通过将 pandas_dataframesc_df1 数据帧的 schema 一起传递来使用 spark.createDataFrame()

Example:

df=spark.createDataFrame([("a",1),("b",2)],["id","name"])

#converting to pandas df
pandas_df=df.toPandas()

print(type(pandas_df))
#<class 'pandas.core.frame.DataFrame'>

#converting back to pysparkdf by passing df schema
spark_df=spark.createDataFrame(pandas_df,schema=df.schema)

print(type(spark_df))
#<class 'pyspark.sql.dataframe.DataFrame'>

spark_df.show()
#+---+----+
#| id|name|
#+---+----+
#|  a|   1|
#|  b|   2|
#+---+----+


#union both dataframes
df.union(spark_df).show()
#+---+----+
#| id|name|
#+---+----+
#|  a|   1|
#|  b|   2|
#|  a|   1|
#|  b|   2|
#+---+----+

【讨论】:

    猜你喜欢
    • 2017-06-21
    • 2017-06-02
    • 2016-02-14
    • 2022-12-15
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    相关资源
    最近更新 更多