Spark:如何并行运行 PCA?只使用了一个线程

数据挖掘 机器学习 大数据 主成分分析 阿帕奇火花 pyspark
2022-03-13 16:29:08

我使用 pySpark 并设置我的配置,如下所示:

spark = (SparkSession.builder.master("local[*]")
        .config("spark.driver.memory", "20g")
        .config("spark.executor.memory", "10g")
        .config("spark.driver.cores", "30")
        .config("spark.num.executors", "8")
        .config("spark.executor.cores", "4")
        .getOrCreate())
sc = spark.sparkContext

如果我然后运行 ​​PCA:

from pyspark.ml.feature import PCA

pca = PCA(k=50, inputCol="features", outputCol="pcaFeatures")
model = pca.fit(train)

只有一个线程处于活动状态,因此计算需要很长时间。

如何在 Spark 中并行化 PCA?

我在本地机器上运行,并没有在配置中配置集群。

我也没有安装推荐的 ml 包,因为警告

WARN LAPACK: Failed to load implementation from: com.github.fommil.netlib.NativeSystemLAPACK

出现。

1个回答

根据MLlib Linear Algebra Acceleration Guide文档,需要安装 LAPACK 和相关库并进行更正配置,才能获得 Spark 的完全加速。

此外,文档提到有时可能没有加速。这可能是您的情况的结果,因为与在集群上运行相比,在本地计算机上运行。