Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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_Apache Kafka_Apache Spark Sql_Yarn - Fatal编程技术网

Apache spark Spark中的异步对象共享

Apache spark Spark中的异步对象共享,apache-spark,apache-kafka,apache-spark-sql,yarn,Apache Spark,Apache Kafka,Apache Spark Sql,Yarn,我对spark有一个非常基本的了解,我正在努力找到一些可以帮助我实现以下目标的东西: 在所有节点上异步共享对象池 我现在想的是,假设有10个节点,编号从1到10。 如果我只有一个对象,我必须使我的对象同步,以便任何节点都可以访问它。我不想那样。 第二个选择是,我可以拥有一个包含10个对象的池。 我想以这样一种方式编写代码:节点编号1始终使用对象编号1,节点编号2始终使用对象编号2,依此类推 一种示例方法是,在执行任务之前,获取线程ID并使用对象编号(线程ID%10)。这将导致大量碰撞,并且不起作

我对spark有一个非常基本的了解,我正在努力找到一些可以帮助我实现以下目标的东西:

在所有节点上异步共享对象池

我现在想的是,假设有10个节点,编号从1到10。
如果我只有一个对象,我必须使我的对象同步,以便任何节点都可以访问它。我不想那样。 第二个选择是,我可以拥有一个包含10个对象的池。 我想以这样一种方式编写代码:节点编号1始终使用对象编号1,节点编号2始终使用对象编号2,依此类推

一种示例方法是,在执行任务之前,获取线程ID并使用对象编号(线程ID%10)。这将导致大量碰撞,并且不起作用

有没有一种方法可以让我以某种方式获取nodeID或processID,并让我的代码根据该ID获取对象?或者以其他方式在集群上拥有异步对象池

我很抱歉,如果这听起来很琐碎,我只是刚刚开始,无法在网上找到很多关于我的疑问的资源


PS:我正在使用SparkStreaming+Kafka+Thread设置,如果有必要的话。

Spark会自动在所有可用的集群节点上划分数据;您不需要控制或跟踪分区的实际存储位置。一些RDD操作还需要完全由Spark管理的洗牌,因此您不能依赖分区的布局


共享一个对象只有在它是不可变的情况下才有意义。每个工作节点接收原始对象的副本,对其进行的任何本地更改都不会反映在其他节点上。如果这是您所需要的,您可以使用
sc.broadcast()
在并行操作之前高效地将对象分布到所有工作区。

Spark没有全局共享内存,因此共享对象实际上不是一个选项。