想象一下,我对HDFS中托管的文件执行一些Spark操作。像这样:
var file = sc.textFile("hdfs://...")
val items = file.map(_.split('\t'))
...
因为在Hadoop世界中,代码应该放在数据所在的位置,对吧?
所以我的问题是: Spark工作人员如何知道 HDFS数据节点? Spark如何知道执行代码的数据节点?
答案 0 :(得分:14)
Spark重用Hadoop类:当你调用textFile
时,它创建一个TextInputFormat,它有一个getSplits
方法(一个分区大致是一个分区或块),然后每个{{} 3}}有getLocations
和getLocationInfo
方法。