在 EMR 上使用 OpenBLAS Spark

Spark with OpenBLAS on EMR

在 EMR 实例上尝试 运行 Spark 2.1.0 中的 MlLib ALS 算法时,我不断收到臭名昭著的警告:

WARN BLAS: Failed to load implementation from: com.github.fommil.netlib.NativeSystemBLAS
WARN BLAS: Failed to load implementation from: com.github.fommil.netlib.NativeRefBLAS

我通过重建 Spark 以包含带有 -Pnetlib-lgpl 标志的 netlib-java 设法解决了本地 Ubuntu 机器上的问题,但是有没有办法避免重建默认值EMR Spark 构建?目前我正试图通过使用 sbt-assembly 构建一个胖 JAR 来规避它,添加以下依赖项:

libraryDependencies += "com.github.fommil.netlib" % "all" % "1.1.2"

尽管组装成功,但是当 运行ning spark-submit 时,BLAS 警告仍然没有消失。我在 EMR 上安装了 openblas 和 lapack。

好吧,用一个胖 JAR 似乎是不可能的,所以我构建了一个自定义的 Spark 分布,如下所示:

export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"
./dev/make-distribution.sh --name spark --tgz -Phadoop-2.7 -Phive -Phive-thriftserver -Pnetlib-lgpl -Pkinesis-asl -Pspark-ganglia-lgpl

并用我的构建替换了 EMR 上的 /usr/lib/spark 目录。成功了。