Не удалось получить доступ к AnyRef в пакете Scala

Я использую Apache Toree (версия от GitHub). Когда я пытаюсь выполнить запрос к таблице postgresql, я получаю периодически возникающие ошибки компилятора scala (когда я запускаю одну и ту же ячейку дважды, ошибки исчезают, и код работает нормально).

Я ищу совет о том, как отладить эти ошибки. Ошибки выглядят странно (они появляются в блокноте ноутбука на stdout).

error: missing or invalid dependency detected while loading class file 'QualifiedTableName.class'.
Could not access type AnyRef in package scala,
because it (or its dependencies) are missing. Check your build definition for
missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
A full rebuild may help if 'QualifiedTableName.class' was compiled against an incompatible version of scala.
error: missing or invalid dependency detected while loading class file 'FunctionIdentifier.class'.
Could not access type AnyRef in package scala,
because it (or its dependencies) are missing. Check your build definition for
missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
A full rebuild may help if 'FunctionIdentifier.class' was compiled against an incompatible version of scala.
error: missing or invalid dependency detected while loading class file 'DefinedByConstructorParams.class'.
...

Код прост: извлечь набор данных из таблицы postgres:

%AddDeps org.postgresql postgresql 42.1.4 --transitive
val props = new java.util.Properties();
props.setProperty("driver","org.postgresql.Driver");
val df = spark.read.jdbc(url = "jdbc:postgresql://postgresql/database?user=user&password=password", 
                table = "table", predicates = Array("1=1"), connectionProperties = props)
df.show()

я проверил на очевидность (и toree, и apache spark используют scala 2.11.8, я собрал apache toree с APACHE_SPARK_VERSION=2.2.0, который совпадает с искрой, которую я скачал)

Для справки, это часть Dockerfile, которую я использовал для настройки toree и spark:

RUN wget https://d3kbcqa49mib13.cloudfront.net/spark-2.2.0-bin-hadoop2.7.tgz && tar -zxf spark-2.2.0-bin-hadoop2.7.tgz && chmod -R og+rw /opt/spark-2.2.0-bin-hadoop2.7 && chown -R a1414.a1414 /opt/spark-2.2.0-bin-hadoop2.7
RUN (curl https://bintray.com/sbt/rpm/rpm > /etc/yum.repos.d/bintray-sbt-rpm.repo)
RUN yum -y install --nogpgcheck sbt
RUN (unset http_proxy; unset https_proxy; yum -y install --nogpgcheck java-1.8.0-openjdk-devel.i686)
RUN (git clone https://github.com/apache/incubator-toree && cd incubator-toree && make clean release APACHE_SPARK_VERSION=2.2.0 ; exit 0)
RUN (. /opt/rh/rh-python35/enable; cd /opt/incubator-toree/dist/toree-pip ;python setup.py install)
RUN (. /opt/rh/rh-python35/enable; jupyter toree install --spark_home=/opt/spark-2.2.0-bin-hadoop2.7 --interpreters=Scala)

2 ответа

У меня была похожая проблема, но она, похоже, разрешилась, просто переоценив ячейку в блокноте Jupyter, или перезапустив ядро, а затем переоценив ячейку. Раздражает.

Как сказано в комментарии cchantep, вы, вероятно, используете версию Scala, отличную от той, которая использовалась для сборки Spark.

Самое простое решение - проверить, какой из них используется Spark, и переключиться на него, например, на Mac:

brew switch scala 2.11.8
Другие вопросы по тегам