【问题标题】:Appending large number of data frames efficiently in pyspark在 pyspark 中有效地附加大量数据帧
【发布时间】:2020-08-30 12:03:06
【问题描述】:

我有一个包含大量数据帧的字典,我打算将它们全部合并到 dbfs 中,尝试以下操作:

***df = sqlContext.createDataFrame([],schema)
for i in dict.keys():
  df = df.union(dict[i])***

这需要很长时间才能执行!有没有一种有效的方法来合并它们?我假设我要去 ((((a+b)+c)+d)+e).... 这就是为什么更多时间

【问题讨论】:

  • 这个答案有帮助吗?

标签: python scala pyspark apache-spark-sql databricks


【解决方案1】:

DataFrames只能一一合并,但是你可以在rdd-s上做一个union,然后将final一个转换回dataframe:

def unionAll(dict, schema):
    dfs = dict.values()
    firstDf = dfs[0]
    return firstDf.sql_ctx.createDataFrame(
        firstDf.sql_ctx._sc.union([df.rdd for df in dfs]),
        schema
    )

根据http://apache-spark-developers-list.1001551.n3.nabble.com/repeated-unioning-of-dataframes-take-worse-than-O-N-2-time-td20394.html#a20408,您应该会提高一些速度,因为 Spark 不会每次都通过前一个 df-s 的分析阶段。

【讨论】:

    猜你喜欢
    • 2015-12-21
    • 2015-09-28
    • 1970-01-01
    • 2021-03-19
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    相关资源
    最近更新 更多