Java NPE при загрузке зависимости от Maven из Zeppelin в AWS EMR

Я создал кластер Spark в EMR, используя следующую команду:

aws emr create-cluster \
  --name "2-node Zeppelin cluster (turn me off after use)" \
  --instance-type m3.xlarge \
  --release-label emr-4.2.0 \
  --instance-count 2 \
  --log-uri s3://redacted/logs \
  --ec2-attributes KeyName=redacted \
  --use-default-roles \
  --applications Name=Spark Name=Zeppelin-Sandbox\
  --configurations file://aws-emr/configs/spark.json \
  --no-auto-terminate

Это дало мне 2-узловой кластер Spark (v 1.5.2) на EMR с пользовательским интерфейсом Apache Zeppelin (v 0.5.5).

Однако при попытке загрузить зависимость от Maven в ZeppelinContext с помощью z.load() (сразу после вращения кластера — я ничего не делал между ними) согласно документам Я получил исключение нулевого указателя Java, по-видимому, из-за какой-то ошибки Sonatype Repo:

введите здесь описание изображения

  • Я просмотрел несколько ссылок, пытаясь понять, в чем может быть проблема, но не смог решить проблему.

  • Я запускаю Yarn, и у меня есть другое, не связанное с этим приложение Spark (Spark Streaming), которое также работает на Yarn.

  • Я также пытался позвонить z.reset() до этого, но безрезультатно. На самом деле, он даже выдал ошибку: error: value reset is not a member of org.apache.zeppelin.spark.ZeppelinContext

  • Я отследил файл и строку, упомянутые в сообщении об ошибке, и оказалось, что это эту строку, которая выглядит так:

    ArtifactRequestBuilder builder = new ArtifactRequestBuilder( trace );
    DependencyFilter filter = request.getFilter();
    DependencyVisitor visitor = ( filter != null ) ? new FilteringDependencyVisitor( builder, filter ) : builder;
    visitor = new TreeDependencyVisitor( visitor );
    result.getRoot().accept( visitor ); //<<<<------- THIS
    

Кто-нибудь прошел через это и/или у него есть какая-либо информация, которая могла бы мне помочь?


person Felipe    schedule 26.01.2016    source источник


Ответы (1)


Неважно, я нашел обходной путь, если не причину проблемы:

  • SSH в свой экземпляр EMR и отредактируйте файл /usr/lib/zeppelin/conf/zeppelin-env.sh, изменив последнюю строку так, чтобы он выглядел так:

    export SPARK_SUBMIT_OPTIONS="$SPARK_SUBMIT_OPTIONS --packages org.apache.spark:spark-streaming-kinesis-asl_2.10:1.5.2"
    

Это заставит Spark загрузить это (и любые указанные вами пакеты, разделенные запятыми) в ваш интерпретатор Spark, чего я и хотел.

P.S. Спасибо, Мон Су Ли, за упоминание об этом в это сообщение списка рассылки

person Felipe    schedule 26.01.2016
comment
Судя по всему, это проблема с AWS, которая будет исправлена ​​в следующем выпуске (4.3.0): apache-zeppelin-users-incubating-mailing-list.75479.x6.nabble.c - person Felipe; 27.01.2016
comment
ОБНОВЛЕНИЕ: Это больше не проблема в emr-4.3.0 - person Felipe; 28.01.2016