Как правильно настроить собственный ARPACK для Spark 2.2.0

Я получаю следующее предупреждение при запуске задания PySpark:

10.17.06 18:27:16 ПРЕДУПРЕЖДЕНИЕ ARPACK: не удалось загрузить реализацию из: com.github.fommil.netlib.NativeSystemARPACK

10.17.06 18:27:16 ПРЕДУПРЕЖДЕНИЕ 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, чтобы он указывал на путь к общей библиотеке, как показано ниже.

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-2.2.0 со страницы загрузки spark.


person Community    schedule 06.10.2017    source источник
comment
Проверьте это. 15647970" rel="nofollow noreferrer">issues.apache.org/jira/browse/ , такое же предупреждение в K-Means.   -  person mayank agrawal    schedule 07.10.2017
comment
@mayankagrawal Я прошел через это, но это связано с первым предупреждением, связанным с кешем. Я заинтересован в разрешении последних двух предупреждений, в которых я хочу использовать собственную библиотеку ARPACK для вычисления svd.   -  person    schedule 08.10.2017
comment
/*usr*/lib/libarpack.so vs export LD_LIBRARY_PATH=/*var*/lib/ -- Вероятно, это просто ошибка в вашем описании.   -  person Rick Moritz    schedule 13.10.2017
comment
Да, это была ошибка записи, спасибо, что выделили ее, я обновил свой вопрос @RickMoritz, чтобы он был более ясным.   -  person    schedule 13.10.2017


Ответы (1)


После изучения я могу удалить эти предупреждения и использовать собственный ARPACK следующим образом.

Решение состояло в том, чтобы перестроить spark с аргументом -Pnetlib-lgpl.

Создайте 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 правильно установлен. [ОШИБКА] Не удалось выполнить команду.

[УРЕЗАНО]


[ИНФО] ОШИБКА ПОСТРОЙКИ [ИНФО]


[ИНФО] Общее время: 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
person Community    schedule 13.10.2017