首页 > 解决方案 > 如何在 PySpark 中创建空 Spark DataFrame 并附加数据?

问题描述

我的任务是将 for 循环生成的多个 Spark DataFrame 组合在一起。所以我想在运行for循环之前创建一个空的DataFrame,然后通过UnionAll将它们组合起来。result是从 for 循环生成的数据帧的名称。

下面是代码:

empty = sqlContext.createDataFrame(sc.emptyRDD(), StructType([]))
empty = empty.unionAll(result)

以下是错误:

first table has 0 columns and the second table has 25 columns

看起来我必须在创建空的 Spark DataFrame 时指定特定的架构。我想知道是否有一种方法可以让它在不这样做的情况下工作,或者只是结合 Spark DataFrames。我确实有很多列要另外指定。

提前致谢!

标签: pythonpysparkapache-spark-sql

解决方案


由于您的empty数据框没有任何列,因此当我们这样做时,unionAll我们需要具有相同数量的列。

尝试通过创建empty dataframe然后result dataframe schema执行unionAll

Example:

result=spark.createDataFrame([(1,2,3,4)],['id','a','b','c'])
empty = sqlContext.createDataFrame(sc.emptyRDD(), result.schema)
empty.unionAll(result).show()
#+---+---+---+---+
#| id|  a|  b|  c|
#+---+---+---+---+
#|  1|  2|  3|  4|
#+---+---+---+---+

推荐阅读