Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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 如何在Google Dataproc工作节点上缓存数据_Apache Spark_Pyspark_Google Cloud Platform_Spark Streaming_Google Cloud Dataproc - Fatal编程技术网

Apache spark 如何在Google Dataproc工作节点上缓存数据

Apache spark 如何在Google Dataproc工作节点上缓存数据,apache-spark,pyspark,google-cloud-platform,spark-streaming,google-cloud-dataproc,Apache Spark,Pyspark,Google Cloud Platform,Spark Streaming,Google Cloud Dataproc,我想在工作节点上本地缓存一些数据(ndarray),以便与Spark streaming传入的RDD分发的ndarray进行比较。最好的方法是什么 因为我想将存储在文件中的ndarray与Spark streaming传入的每个ndarray进行比较。我似乎无法将这些数据加载到RDD中,因为我无法在另一个RDD的map函数中遍历另一个RDD。我尝试将它们加载到主节点上的列表中,并将它们广播到工作节点。但是,当我尝试遍历广播变量并与传入数据进行比较时,出现了一个错误,即广播变量不可编辑。这里的问题

我想在工作节点上本地缓存一些数据(ndarray),以便与Spark streaming传入的RDD分发的ndarray进行比较。最好的方法是什么


因为我想将存储在文件中的ndarray与Spark streaming传入的每个ndarray进行比较。我似乎无法将这些数据加载到RDD中,因为我无法在另一个RDD的map函数中遍历另一个RDD。我尝试将它们加载到主节点上的列表中,并将它们广播到工作节点。但是,当我尝试遍历广播变量并与传入数据进行比较时,出现了一个错误,即广播变量不可编辑。

这里的问题是,您需要使用value()方法读取广播变量的实际值。下面是@user9613318评论中的示例:

bd_array = sc.broadcast(np.arange(100))

这将为该范围创建一个numpy数组,并将其广播给所有工作人员。如果您尝试将变量仅与“bd_array”一起使用,您将得到一个广播变量类,该类具有其他方法,如persist、destroy等。这是不可移植的。如果您使用“bd_array.value”读取它,您将返回可以迭代的广播numpy数组()

“但是当我尝试遍历它们并与传入数据进行比较时,我得到了一个错误,即广播变量不适用”-您是否忘了使用
value
bd_array=sc.broadcast(np.arange(100));bd_array.value.shape
)?@user9613318哦,是的,我完全忘了。谢谢@user9613318的评论是你的答案吗?在这种情况下,他可以添加它作为答案。