Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.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
Java 同一节点上的分区处理?_Java_Apache Spark - Fatal编程技术网

Java 同一节点上的分区处理?

Java 同一节点上的分区处理?,java,apache-spark,Java,Apache Spark,Spark在RDD中创建逻辑分区。我有两个问题: 1) Google上到处都说分区有助于并行处理,每个分区都可以在单独的节点上处理。我的问题是我是否有多核 机器,我不能在同一个节点中处理分区吗 2) 假设我从文件系统读取文件,spark创建了一个具有四个分区的RDD。现在可以将每个分区进一步划分为RDD了吗?例如:- firstRDD=sc.textFile("hdfs://...") //firstRDD contains four partition which are processe

Spark在RDD中创建逻辑分区。我有两个问题:

1) Google上到处都说分区有助于并行处理,每个分区都可以在单独的节点上处理。我的问题是我是否有多核 机器,我不能在同一个节点中处理分区吗

2) 假设我从文件系统读取文件,spark创建了一个具有四个分区的RDD。现在可以将每个分区进一步划分为RDD了吗?例如:-

 firstRDD=sc.textFile("hdfs://...")
 //firstRDD contains four partition which are processed on four diff nodes
 secondRDD=firstRDD.filter(someFunction);
// Now will each node create separate secondRDD  which will have further paritions ?

将输入文本文件拆分为4个分区(可能位于单个节点内或最多4个节点内)不会拆分为更多分区,因此将由最初读取这些分区的同一执行器进行评估。但是,您可以
重新分区
RDD/数据帧以增加并行化(例如为64个执行器提供64个分区)。这将迫使一个洗牌,这可能是昂贵的,但值得特别是在计算昂贵的工作。这是一个问题的常见情况是读取不可丢弃的文件,如GZIP文件。无论文件大小如何,单个执行器都必须读入文件(并进行处理!!)。因此,重新划分它对许多GZIP工作负载非常有益,因为它促进了并行计算

您所说的
。将因此由最初读取它们的同一执行器进行评估
如果在4个节点上处理4个部分,那么将有4个执行器而不是1个,对吗?另外,当您
但是,您可以重新分区..
您的意思是,一旦在RDD中创建了一个分区,在我们显式执行之前,默认情况下不会进一步分区吗?如果4个节点在1个分区中读取,则表示每个分区有4个执行器。根据转换(即聚合),可以将一个分区中的数据拆分为多个分区。例如,读入一个大的gzip文件,添加几列并清理数据,而不进行聚合,然后将其写出,这将给单个执行者带来整个工作负载,除非你明确告诉它重新分区。@scottmiles Jacek是一个很好的来源,这本书充满了好东西。你能看一下吗?