【问题标题】:Larger number of Transformations on multiple dataframe in SparkSpark中多个数据帧上的大量转换
【发布时间】:2020-07-12 05:00:44
【问题描述】:

我有一个基于元数据驱动的 spark 的转换引擎。我对存储在内存中的 Scala Map[String, DataFrame] 中的多个数据帧执行一组转换。我遇到一种情况,我使用 84 种转换生成数据框,包括(withColumn、Join、union 等)。在这些之后,输出数据框被用作另一组转换的输入。

如果我在前 84 次转换之后写入中间转换结果,然后将数据帧从输出路径加载到 Map 中。下一组转换工作正常。如果我不这样做,评估需要 30 分钟。

我的方法:我尝试使用以下方法持久化 Dataframe:

dfMap(target).cache()

但这种方法没有帮助。

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    那么在这 84 种转换中,有多少是基于同一个键的聚合?例如,如果您正在计算特定列值(例如 user_id)的最小值、最大值等,那么它会在按用户 ID 对其进行分桶后存储您的原始数据帧。同样对于加入,如果您使用相同的密钥,您可以按它们进行分区。如果你不分桶,那么对于每个转换,都会有一个 spark shuffle。

    这个答案应该会有所帮助 - Spark Data set transformation to array

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-30
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2021-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多