Начальная загрузка jar spark-avro в кластер Amazon EMR

Я хочу прочитать файлы avro, расположенные в Amazon S3, из блокнота Zeppelin. Насколько я понимаю, у Databricks есть замечательный пакет для этого spark-avro. Какие шаги мне нужно предпринять, чтобы загрузить этот jar-файл в мой кластер и заставить его работать?

Когда я пишу это в своем блокноте, val df = sqlContext.read.avro("s3n://path_to_avro_files_in_one_bucket/")

Я получаю следующую ошибку - <console>:34: error: value avro is not a member of org.apache.spark.sql.DataFrameReader

Я просмотрел это. Я предполагаю, что опубликованное там решение не работает для последней версии Amazon EMR.

Если бы кто-то мог дать мне указатели, это действительно помогло бы.


person van_d39    schedule 01.08.2016    source источник


Ответы (2)


Вот как я связываю зависимости spark-avro. Этот метод работает для связывания любых других зависимостей с искрой.

  1. Убедитесь, что ваша версия spark совместима с вашим spark-avro. Подробнее о зависимостях вы найдете здесь.

  2. Я положил свой файл spark-avro в корзину S3. Вы можете использовать hdfs или любой другой магазин.

  3. При запуске кластера EMR добавьте в конфигурацию следующий JSON: [{"classification":"spark-defaults", "properties":{"spark.files":"/path_to_spark-avro_jar_file", "spark.jars":"/path_to_spark-avro_jar_file"}, "configurations":[]}]

Это не единственный способ сделать это. Перейдите по этой ссылке для получения более подробной информации.

person van_d39    schedule 09.08.2016

Еще один вариант — добавить параметр --dependencies либо в spark-shell, либо в spark submit (это для spark 2.x).

--packages com.databricks:spark-avro_2.11:4.0.0

person Andrew Long    schedule 03.12.2018