Начальная загрузка спарк-авро банку в кластер 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. Этот метод работает для связывания любых других зависимостей с искрой.
Убедитесь, что ваша версия spark совместима с вашим spark-avro. Вы найдете подробности о зависимостях здесь.
Я положил свой файл spark-avro в мое ведро S3. Вы можете использовать hdfs или любой другой магазин.
При запуске кластера 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