Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 在Spark数据帧项上迭代执行本地(驱动程序)代码_Apache Spark_Pyspark_Spark Dataframe - Fatal编程技术网

Apache spark 在Spark数据帧项上迭代执行本地(驱动程序)代码

Apache spark 在Spark数据帧项上迭代执行本地(驱动程序)代码,apache-spark,pyspark,spark-dataframe,Apache Spark,Pyspark,Spark Dataframe,我正在使用Spark、Dataframes和Python 假设我有一个相当大的数据帧,每行包含一些JPG图像作为二进制数据。我想建立一种浏览器来按顺序显示每个图像 我有一个视图函数,它将一行作为输入,并执行如下操作: def view(row): windows = popup_window_that_display_image(row.image) waitKey() destroy_window(window) 以下代码与spark提交选项--master loca

我正在使用Spark、Dataframes和Python

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

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

def view(row):
    windows = popup_window_that_display_image(row.image)
    waitKey()
    destroy_window(window)
以下代码与spark提交选项--master local[*]配合使用效果良好:

显然,view函数不能在远程Spark执行器上运行。因此,上述代码在客户机模式下失败

我可以使用以下代码在客户机模式下工作:

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

因此,我的问题是:

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

谢谢你的帮助

您可以做的最好的事情是将数据保存到支持随机访问的系统(如您最喜欢的数据库)中,并从中读取数据。可以使用
ToLocalitator
indexedRDD
或其他技巧,但使用Spark做这样的事情并没有真正的价值。是的,我想是这样的。问题是load_和_compute_数据帧是数据密集型的(在200个内核上只需几分钟),并且此函数变化很大。我希望避免必须从HDFS导出数据才能查看这些数据。
df = load_and_compute_dataframe(context, some_arguments)
df.foreach(view)
df = load_and_compute_dataframe(context, some_arguments)
data = df.limit(10).collect(); 
for x in data:
    view(w)