如何正确设置Spark 2.2.0的本机ARPACK

时间:2017-10-06 18:40:23

标签: apache-spark pyspark blas arpack netlib

运行PySpark作业时,我收到以下警告:

  

17/10/06 18:27:16 WARN ARPACK:无法加载实现   来自:com.github.fommil.netlib.NativeSystemARPACK

     

17/10/06 18:27:16   WARN ARPACK:无法加载实现:   com.github.fommil.netlib.NativeRefARPACK

我的代码是

mat = RowMatrix(tf_rdd_vec.cache())
svd = mat.computeSVD(num_topics, computeU=False) 

我正在使用Ubuntu 16.04 EC2实例。我已将所有以下库安装到我的系统中。

sudo apt install libarpack2 Arpack++ libatlas-base-dev liblapacke-dev libblas-dev gfortran libblas-dev liblapack-dev libnetlib-java libgfortran3 libatlas3-base libopenblas-base

我已将LD_LIBRARY_PATH调整为指向共享的lib路径,如下所示。

export LD_LIBRARY_PATH=/usr/lib/

现在当我列出$ LD_LIBRARY_PATH目录时,它显示了以下 .so 文件

ubuntu:~$ ls $LD_LIBRARY_PATH/*.so | grep "pack\|blas"
/usr/lib/libarpack.so
/usr/lib/libblas.so
/usr/lib/libcblas.so
/usr/lib/libf77blas.so
/usr/lib/liblapack_atlas.so
/usr/lib/liblapacke.so
/usr/lib/liblapack.so
/usr/lib/libopenblasp-r0.2.18.so
/usr/lib/libopenblas.so
/usr/lib/libparpack.so

但是我仍然无法使用Native ARPACK实现。此外,我正在缓存RDD传递给矩阵但它仍然抛出缓存警告任何建议如何解决这3个警告?

我已经从spark下载页面下载了spark-2.2.0的编译版本。

1 个答案:

答案 0 :(得分:4)

在探索之后,我可以通过以下方式删除这些警告并使用本机ARPACK。

解决方案是使用-Pnetlib-lgpl参数重建spark。

为原生支持构建Spark

以下是我在Ubuntu 16.04上的步骤

# Make sure you use the correct download link, from spark download section
wget https://d3kbcqa49mib13.cloudfront.net/spark-2.2.0.tgz
tar -xpf spark-2.2.0.tgz 
cd spark-2.2.0/
./dev/make-distribution.sh --name custom-spark --pip  --tgz -Psparkr -Phadoop-2.7  -Pnetlib-lgpl

当我第一次通过抛出以下错误而失败时

  

找不到'R_HOME'。请指定'R_HOME'或确保R是   安装正确。 [ERROR]命令执行失败。

     

[TRUNCATED]

           

[INFO] BUILD FAILURE [INFO]

           

[INFO]总时间:02:38分钟(挂钟)[信息]完成于:   2017-10-13T21:04:11 + 00:00 [信息]最终记忆:59M / 843M

     

[错误]无法执行目标   org.codehaus.mojo:exec-maven-plugin:1.5.0:exec(sparkr-pkg)项目   spark-core_2.11:命令执行失败。流程退出了   错误:1(退出值:1) - > [帮助1] [错误]

所以我安装了R语言

sudo apt install r-base-core

然后我重新运行上面的构建命令并成功安装。

以下是构建此版本时的相关版本

$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.16.04.3-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

$ python --version
Python 2.7.12

$ R --version
R version 3.2.3 (2015-12-10) -- "Wooden Christmas-Tree"
Copyright (C) 2015 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

$ make --version
GNU Make 4.1
Built for x86_64-pc-linux-gnu