我正在使用Spark,Dataframes和Python。
假设我有一个非常庞大的数据帧,每一行都包含一些JPG图像作为二进制数据。我想构建某种浏览器来顺序显示每个图像。
我有一个 view 函数,它将一行作为输入,并执行以下操作:
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)
显然, 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个项目。
所以我的问题是:
感谢您的帮助!