Как импортировать библиотеки в Spark Notebook

У меня проблемы с импортом magellan-1.0.4-s_2.11 в искровой тетради. Я скачал банку с https://spark-packages.org/package/harsha2010/magellan и попытался разместить SPARK_HOME/bin/spark-shell --packages harsha2010:magellan:1.0.4-s_2.11 в Start of Customized Settings раздел файла spark-notebook папки bin.

Вот мой импорт

import magellan.{Point, Polygon, PolyLine}
import magellan.coord.NAD83
import org.apache.spark.sql.magellan.MagellanContext
import org.apache.spark.sql.magellan.dsl.expressions._
import org.apache.spark.sql.Row
import org.apache.spark.sql.types._

И мои ошибки...

<console>:71: error: object Point is not a member of package org.apache.spark.sql.magellan
       import magellan.{Point, Polygon, PolyLine}
              ^
<console>:72: error: object coord is not a member of package org.apache.spark.sql.magellan
       import magellan.coord.NAD83
                       ^
<console>:73: error: object MagellanContext is not a member of package org.apache.spark.sql.magellan
       import org.apache.spark.sql.magellan.MagellanContext

Затем я попытался импортировать новую библиотеку, как любую другую библиотеку, поместив ее в main script вот так:

$lib_dir/magellan-1.0.4-s_2.11.jar"

Это не сработало, и я почесал голову, размышляя, что я сделал не так. Как импортировать библиотеки, такие как magellan, в блокнот spark?

3 ответа

Попробуйте оценить что-то вроде

:dp "harsha2010" % "magellan" % "1.0.4-s_2.11"

Он загрузит библиотеку в Spark, что позволит ей imported - при условии, что это может быть получено через репозиторий Maven. В моем случае это не удалось с сообщением:

failed to load 'harsha2010:magellan:jar:1.0.4-s_2.11 (runtime)' from ["Maven2 local (file:/home/dev/.m2/repository/, releases+snapshots) without authentication", "maven-central (http://repo1.maven.org/maven2/, releases+snapshots) without authentication", "spark-packages (http://dl.bintray.com/spark-packages/maven/, releases+snapshots) without authentication", "oss-sonatype (https://oss.sonatype.org/content/repositories/releases/, releases+snapshots) without authentication"] into /tmp/spark-notebook/aether/b2c7d8c5-1f56-4460-ad39-24c4e93a9786

Я думаю, что файл был слишком большим, и соединение было прервано, прежде чем весь файл мог быть загружен.

Временное решение

Поэтому я скачал JAR вручную из:

http://dl.bintray.com/spark-packages/maven/harsha2010/magellan/1.0.4-s_2.11/

и скопировал его в:

/tmp/spark-notebook/aether/b2c7d8c5-1f56-4460-ad39-24c4e93a9786/harsha2010/magellan/1.0.4-s_2.11

А потом :dp Команда сработала. Попробуйте сначала вызвать его, и, если это не удастся, скопируйте JAR в правильный путь, чтобы все заработало.

Лучшее решение

Я должен выяснить, почему загрузка не смогла исправить это... или поместить эту библиотеку в мое локальное хранилище M2. Но это должно помочь вам.

Я бы предложил проверить это:

https://github.com/spark-notebook/spark-notebook/blob/master/docs/metadata.md#import-download-dependencies

а также

https://github.com/spark-notebook/spark-notebook/blob/master/docs/metadata.md#add-spark-packages

я думаю :dp Волшебная команда устарела, вместо этого вы должны добавить свои собственные зависимости в метаданные ноутбука. Вы можете зайти в меню "Правка"> "Редактировать метаданные блокнота", там добавить что-то вроде:

"customDeps": [
   "harsha2010 % magellan % 1.0.4-s_2.11"
]

После этого вам нужно будет перезапустить ядро, вы можете проверить в консоли браузера, правильно ли загружается пакет.

Самый простой способ - установить или добавить EXTRA_CLASSPATH переменная окружения, чтобы указать на ваш .jar загруженный файл: export EXTRA_CLASSPATH = </link/to/your.jar> или же set EXTRA_CLASSPATH= </link/to/your.jar> в вдовах ОС. Здесь найдете подробное решение.

Другие вопросы по тегам