Начальная загрузка спарк-авро банку в кластер 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.

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

1 ответ

Решение

Вот как я связываю зависимости 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":[]}]

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

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

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

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