#pyspark #svm #apache-spark-ml
#pyspark #svm #apache-искра-ml
Вопрос:
Я пытаюсь запустить svm на очень большом наборе данных, который я не могу запустить с помощью sklearn. Sklearn занимает бесконечное время. Итак, я решил использовать pyspark, вот мои конфигурации spark
[('spark.app.id', 'local-1606562652917'),
('spark.executor.id', 'driver'),
('spark.app.name', 'SVM'),
('spark.driver.maxResultSize', '6g'),
('spark.driver.port', '60042'),
('spark.executor.cores', '6'),
('spark.rdd.compress', 'True'),
('spark.serializer.objectStreamReset', '100'),
('spark.master', 'local[*]'),
('spark.submit.pyFiles', ''),
('spark.submit.deployMode', 'client'),
('spark.driver.host', '192.168.56.1'),
('spark.ui.showConsoleProgress', 'true'),
('spark.cores.max', '6')]
Вот искровая сессия
spark = SparkSession.builder
.appName('SVM')
.master('local[*]')
.getOrCreate()
Вот код SVM
from pyspark.ml.classification import LinearSVC,OneVsRest
clf = OneVsRest(classifier=LinearSVC(labelCol='label', featuresCol='features'))
clf = clf.fit(train)
Потребление ЦП составляет менее 10%, когда я проверяю через диспетчер задач.
Комментарии:
1. Spark имеет отложенную оценку, и ничего не будет вычислено, пока вы не вызовете что-то вроде
show()
илиtoPandas()
. Таким образом, потребление процессора не будет2. таким образом, spark не будет быстрым при установке svm для данных
3. Нет, если вы запустите его правильно, это будет очень быстро. Проверьте документы spark ML для примеров. spark.apache.org/docs/latest/api/python/pyspark.ml.html
4. @mck пожалуйста, рассмотрите возможность публикации этого в качестве ответа
5. Он будет работать быстро, если у вас есть кластер ; просто запуск Spark на одной машине, конечно, не будет работать быстрее, и это не рекомендуется.
Ответ №1:
Spark имеет отложенную оценку, и ничего не будет вычислено, пока вы не вызовете что-то вроде df.show()
или df.toPandas()
. Таким образом, потребление ЦП вообще не будет, прежде чем Spark начнет оценивать вещи.
Как было предложено @desertnaut, производительность Spark будет зависеть от имеющегося у вас оборудования, например. он будет быстрым на кластере, но медленным на одной машине.