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
Apache spark apachespark中的并行性证明_Apache Spark_Parallel Processing - Fatal编程技术网

Apache spark apachespark中的并行性证明

Apache spark apachespark中的并行性证明,apache-spark,parallel-processing,Apache Spark,Parallel Processing,场景:我被要求证明ApacheSpark中的并行执行是真正的并行,而不是伪并行(只是通过CPU快速切换任务)。我想证明它的方法是,如果我能证明的话,每个核心(我的机器中有8个核心)都在执行我创建的一个数据分区(创建与可用核心相同数量的分区)。如果我错了,请纠正我 通过下面附带的代码,我可以访问日志中的任务信息,以检查每个分区是否作为单独的任务执行。有人知道如何访问处理器或核心信息以证明每个分区都是由单个核心处理的吗?有没有其他方法可以证明ApacheSpark的并行性 def getMap()=

场景:我被要求证明ApacheSpark中的并行执行是真正的并行,而不是伪并行(只是通过CPU快速切换任务)。我想证明它的方法是,如果我能证明的话,每个核心(我的机器中有8个核心)都在执行我创建的一个数据分区(创建与可用核心相同数量的分区)。如果我错了,请纠正我

通过下面附带的代码,我可以访问日志中的任务信息,以检查每个分区是否作为单独的任务执行。有人知道如何访问处理器或核心信息以证明每个分区都是由单个核心处理的吗?有没有其他方法可以证明ApacheSpark的并行性

def getMap()=Map(
1->“uno”,
4->“测试”,
5->“老虎”,
6->“删除”)
def getList()=列表(
1->“一个”,
2->“两个”,
3->“三个”,
4->“四个”,
5->“五”,
6->“六”,
7->“七”,
8->“八”,
9->“九”,
10->“十”)
def main(参数:数组[字符串]){
val conf=new SparkConf().setAppName(“并行连接”).setMaster(“本地[8]”)
val sc=新的SparkContext(配置)
val t2=sc.parallelize(getList(),8)
val t1=getMap()
val bt1=sc.广播(t1)
t2.foreachPartition(p=>{
val tc=TaskContext.get
val partId=tc.partitionId()+1
val taskId=tc.taskAttemptId()
p、 foreach(rec=>{
val filteredValue=bt1.value.filterKeys(u.equals(rec.u 1))
val mappedFilterValue=filteredValue.map{case(k,v)=>(“键:+k,值:”+(v,rec._2),“任务ID:+taskId,”分区ID:+partId)}
mappedFilterValue.foreach(println)
})
})
}

你错了。可能是这样,但不一定是这样。请考虑
cgroup
和系统级限制。@zer0323请您详细说明或提供任何可以解释您想法的片段。这是您的家庭作业,但请看一看。“而不是伪并行(只是通过CPU快速切换任务)”嗯,可以用这种方式实现CPU,人们经常这样做。英特尔超线程本质上就是这样。那么,面对笔记本电脑中的反例,你将如何证明这一点呢?