想象一下,我对HDFS中托管的文件执行了一些Spark操作。像这样:

var file = sc.textFile("hdfs://...")
val items = file.map(_.split('\t'))
...

因为在Hadoop世界中,代码应该放在数据所在的位置,对吗?

所以我的问题是: Spark worker 如何知道 HDFS数据节点? Spark如何知道在哪个数据节点上执行代码?

最佳答案

Spark重用Hadoop类:当您调用textFile时,它将创建一个具有getSplits方法(拆分大致是一个分区或块)的TextInputFormat,然后每个InputSplit都具有getLocationsgetLocationInfo方法。

07-25 22:45
查看更多