0

我正在使用 Spark、Dataframes 和 Python。

假设我有一个相当大的数据框,每一行都包含一些 JPG 图像作为二进制数据。我想构建某种浏览器来按顺序显示每个图像。

我有一个视图函数,它以单行作为输入并执行以下操作:

def view(row):
    windows = popup_window_that_display_image(row.image)
    waitKey()
    destroy_window(window)

以下代码适用于 spark-submit 选项--master local[*]

df = load_and_compute_dataframe(context, some_arguments)
df.foreach(view)

显然,视图函数不能在远程 Spark 执行器上运行。所以上面的代码在yarn-client模式下失败了。

我可以使用以下代码在yarn-client模式下工作:

df = load_and_compute_dataframe(context, some_arguments)
data = df.limit(10).collect(); 
for x in data:
    view(w)

缺点是我只能收集一些物品。数据太大,无法一次获取超过 10 或 100 个项目。

所以我的问题是:

  • 有没有办法让一些 DF/RDD 操作在驱动程序上本地执行,而不是在 executors 上执行?
  • 从 11 号开始,有什么东西可以让我从 DF 收集 10 件物品吗?我应该尝试向我的 DF 添加一个“ID”列并对其进行迭代(丑陋)吗?
  • 还有其他方法可以达到这个结果吗?

感谢帮助 !

4

0 回答 0