当我尝试在 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-assemble 构建一个 fat JAR 来规避它,并添加以下依赖项:
libraryDependency += "com.github.fommil.netlib"% "all"% "1.1.2"
虽然组装成功,但运行 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 目录。这就成功了。
关于amazon-web-services - 在 EMR 上使用 OpenBLAS Spark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43286771/