Чтение csv-файлов в zeppelin с помощью spark-csv

Я хочу прочитать csv-файлы в Zeppelin и хотел бы использовать databricks' пакет spark-csv:https://github.com/databricks/spark-csv

в spark-shell я могу использовать spark-csv с

spark-shell --packages com.databricks:spark-csv_2.11:1.2.0

но как мне сказать Zeppelin использовать этот пакет?

спасибо заранее!

6 ответов


вам нужно добавить репозиторий пакетов Spark в Zeppelin, прежде чем вы сможете использовать %dep для пакетов spark.

%dep
z.reset()
z.addRepo("Spark Packages Repo").url("http://dl.bintray.com/spark-packages/maven")
z.load("com.databricks:spark-csv_2.10:1.2.0")

кроме того, если вы хотите, чтобы это было доступно во всех ваших ноутбуках, вы можете добавить параметр --packages в Параметр команды spark-submit в конфигурации interpreters в Zeppelin, а затем перезапустить интерпретатор. Это должно начать контекст с пакета, уже загруженного в соответствии с методом spark-shell.


  1. перейдите на вкладку интерпретатор, щелкните информация о репозитории, добавьте РЕПО и установите URL вhttp://dl.bintray.com/spark-packages/maven
  2. прокрутите вниз до пункта интерпретатора spark и нажмите "правка", прокрутите немного вниз до поля артефакта и добавьте " com.databricks: spark-csv_2.10: 1.2.0" или более новая версия. Затем перезапустите интерпретатор по запросу.
  3. в блокноте используйте что-то например:

    import org.apache.spark.sql.SQLContext
    
    val sqlContext = new SQLContext(sc)
    val df = sqlContext.read
        .format("com.databricks.spark.csv")
        .option("header", "true") // Use first line of all files as header
        .option("inferSchema", "true") // Automatically infer data types
        .load("my_data.txt")
    

обновление:

в списке рассылки пользователей Zeppelin теперь (Ноя. 2016) заявил Moon Soo Lee (создатель Apache Zeppelin), что пользователи предпочитают держать %dep, как это позволяет:

  • самостоятельное документирование библиотечных требований в блокноте;
  • на заметку (и возможно на пользователя) загрузка библиотеки.

тенденция теперь держать %dep, поэтому она не должна быть рассмотрена амортизированной на этом время.


BEGIN-EDIT

%dep устарело в Цеппелине 0.6.0. Пожалуйста, обратитесь к ответу Paul-Armand Verhaegen.

пожалуйста, прочитайте дальше в этом ответе, если вы используете zeppelin старше 0.6.0

END-EDIT

вы можете загрузить пакет spark-csv с помощью интерпретатора %dep.

например,

%dep
z.reset()

// Add spark-csv package
z.load("com.databricks:spark-csv_2.10:1.2.0")

см. раздел Загрузки зависимостей в https://zeppelin.incubator.apache.org/docs/interpreter/spark.html

Если вы уже инициализировали контекст Spark, быстрое решение-перезапустить zeppelin и выполнить пункт zeppelin с указанным выше кодом, а затем выполнить код spark для чтения файла CSV


вы можете добавить файлы jar в зависимости интерпретатора Spark:

  1. Нажмите Меню "интерпретатор" в навигационной панели.
  2. Нажмите кнопку "Изменить" для интерпретатора Spark.
  3. заполнить артефакт и исключить поля.
  4. Нажмите 'Сохранить'

Если вы определяете в conf/zeppelin-env.sh

export SPARK_HOME=<PATH_TO_SPARK_DIST>

Zeppelin будет выглядеть в $SPARK_HOME/conf / spark-по умолчанию.conf и вы можете определить банки там:

spark.jars.packages                com.databricks:spark-csv_2.10:1.4.0,org.postgresql:postgresql:9.3-1102-jdbc41

затем посмотреть

http://zepplin_url: 4040 / окружающая среда / для следующего:

Искра.опарникы файл:/root/.ivy2 / jars / com.databricks_spark-csv_2.10-1.4.0.jar, файл:/root/.ivy2 / jars / org.postgresql_postgresql-9.3-1102-jdbc41.Джар

Искра.банки.пакеты com.databricks: spark-csv_2.10: 1.4.0, org.postgresql: postgresql: 9.3-1102-jdbc41

для больше ссылки: https://zeppelin.incubator.apache.org/docs/0.5.6-incubating/interpreter/spark.html


другое решение:

In conf/zeppelin-env.sh (находится в /etc/zeppelin для меня) добавить строку:

export SPARK_SUBMIT_OPTIONS="--packages com.databricks:spark-csv_2.10:1.2.0"

затем запустите службу.