Как определить количество ресурсов, которое требуется кластеру Spark для применения некоторого алгоритма MLib к огромному набору данных объемом 1 ТБ?
Представьте, что мне нужно использовать алгоритм классификации для больших данных set: https://spark.apache.org/docs/2.2.0/ml-classification-regression.html#decision -tree-классификатор
data = spark.read.format("libsvm").load("data/mllib/sample_libsvm_data.txt")
labelIndexer = StringIndexer(inputCol="label", outputCol="indexedLabel").fit(data)
featureIndexer = VectorIndexer(inputCol="features", outputCol="indexedFeatures", maxCategories=4).fit(data)
(trainingData, testData) = data.randomSplit([0.7, 0.3])
model = pipeline.fit(trainingData)
predictions = model.transform(testData)
В этом примере есть много функций PySpark, которые используют исходный набор данных и наборы обучающих / тестовых данных в качестве входных аргументов и эти наборы данных может быть огромным (размер ТБ). Требуется ли какой-либо функции загружать весь набор данных в память во время ее обработки и заставлять меня иметь объем ОЗУ, соответствующий размеру набора данных?
Есть ли гарантия, что функции могут использовать любой объем памяти? доступно, даже если им нужно обрабатывать кадры данных размера ТБ, намного больше памяти? Работать медленнее из-за нехватки ресурсов - это нормально, если только не происходит сбой сразу, потому что нет ресурсов.