【问题标题】:List of data frames in SparkSpark中的数据帧列表
【发布时间】:2019-07-16 01:45:37
【问题描述】:

是否建议在 Spark 中创建数据框列表?

List<Dataset<Row>> list = some method 

方法读取 x 个文件以从中创建 x 个数据帧。这些数据帧被推送到列表中。

从驱动程序调用此方法并返回通过加入列表中的数据集创建的单个数据框。

我很困惑列表将在哪里形成,在驱动节点还是工作节点?

是否建议创建数据框列表?

【问题讨论】:

  • 我怀疑是联合而不是加入。
  • 不,这是对列表中数据框的连接操作
  • 至少可以这么说。
  • 这是用例的要求。实际上,输入文件的数量因源而异,n 这个想法是编写一个通用代码来读取这些文件,为每个文件创建单独的数据帧,然后根据某些条件加入它们
  • 一个Scala例子可以在stackoverflow.com/questions/41956153/…建立

标签: java apache-spark


【解决方案1】:

请记住,spark 使用延迟执行,并且数据帧实际上只是执行图而不是数据(除非您已缓存数据)。在这种情况下,列表将在驱动程序上等待您对数据帧执行操作,以强制执行它们,例如写入数据。

您是否尝试将所有这些数据框合并在一起?在不确切知道您正在尝试做什么的情况下,通常最好将数据帧的总数保持在合理的数量

【讨论】:

  • 有多个来源生成多个镶木地板文件。从这些 parquet 文件中,我们正在创建数据框。现在说 7 个源有 7 个文件,我正在从它们创建 7 个 Dfs。我将所有这 7 条狗推入一个列表 n 中,然后使用此列表连接所有 7 个数据框以创建一个合并的 df 。发布加入我正在对某些列执行一些转换 n 最终将数据写入镶木地板文件。这个输出文件然后加载一个雪花表
  • * 不是 7 个 DOGS,而是 7 个数据帧:P
  • 你为什么会这样?
  • Dataframe 执行图?有一个 DAG。当然。我不相信
  • @andrew long — 当你说 1k 时,你到底是什么意思?
【解决方案2】:

列表在驱动程序上。每个入口都指向一个 DF,当 Action 被执行时,这个 DF 是分布式的或在驱动程序上。还能怎么办?

很难评论 DF 列表的好坏。

【讨论】:

  • 我可以告诉你一件事,在所有数据帧都加入之前,我们不会调用任何操作或收集任何数据,加入后我们调用保存操作。现在考虑到这种情况,你认为这是个好主意吗
  • 没问题,这在 Spark 中是正常的。
猜你喜欢
  • 1970-01-01
  • 2021-06-02
  • 2018-06-07
  • 2021-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多