Как 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
.