Как Apache Spark знает о узлах данных HDFS?

Представьте, что я делаю некоторые операции Spark в файле, размещенном в HDFS. Что-то вроде этого:

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

Потому что в мире Hadoop код должен идти туда, где находятся данные, верно?

Итак, мой вопрос: как работники Spark знают узлы данных HDFS? Как Spark знает, на каких узлах данных будет выполняться код?

Ответы

Ответ 1

Spark повторно использует классы Hadoop: при вызове textFile он создает TextInputFormat, у которого есть метод getSplits (разделение - это примерно раздел или блок), а затем каждый InputSplit имеет метод getLocations и getLocationInfo.