运行 pyspark svm 模型时 CPU 使用率低
Posted
技术标签:
【中文标题】运行 pyspark svm 模型时 CPU 使用率低【英文标题】:Low CPU usage while run pyspark svm model 【发布时间】:2020-11-28 11:33:47 【问题描述】:我正在尝试在非常大的数据集上运行 svm,但我无法使用 sklearn 运行。使用 sklearn 需要无穷无尽的时间。所以我决定使用 pyspark 这是我的火花配置
[('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)
当我通过任务管理器查看时,CPU 消耗低于 10%。
【问题讨论】:
Spark 有惰性求值,在你调用类似show()
或toPandas()
之前不会计算任何内容。所以不会有cpu消耗
所以在将 svm 拟合到数据时 spark 不会很快
不,如果你运行得当,它会非常快。查看 spark ML 文档以获取示例。 spark.apache.org/docs/latest/api/python/pyspark.ml.html
@mck 请考虑将其发布为答案
它会运行得很快如果你有一个集群;仅在单台机器上运行 Spark 肯定不会运行得更快,因此不建议这样做。
【参考方案1】:
Spark 具有惰性求值,在您调用 df.show()
或 df.toPandas()
之类的名称之前不会计算任何内容。所以在 Spark 开始评估之前完全不会消耗 CPU。
正如@desertnaut 所建议的,对于 Spark 的性能,它将取决于您拥有的硬件,例如它在集群上会很快,但在单台机器上会很慢。
【讨论】:
以上是关于运行 pyspark svm 模型时 CPU 使用率低的主要内容,如果未能解决你的问题,请参考以下文章
如何将 LIBSVM 模型(使用 LIBSVM 保存)读入 PySpark?
如何用 Pyspark 的 SVM 拟合两个 numpy 矩阵?
如何使用 bagging 集成 SVM 和 CNN 分类器?