недопустимая циклическая ссылка с ошибкой в ​​сочетании Spark + Scala

Я столкнулся с ошибкой незаконной циклической ссылки, связанной при сочетании Spark + Scala.

Error Ocured during job for '1473170880000000' and Error Message is scala.reflect.internal.Symbols$CyclicReference: illegal cyclic reference involving method srcip
    at scala.reflect.internal.Symbols$Symbol$$anonfun$info$3.apply(Symbols.scala:1220)
    at scala.reflect.internal.Symbols$Symbol$$anonfun$info$3.apply(Symbols.scala:1218)
    at scala.Function0$class.apply$mcV$sp(Function0.scala:40)
    at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
    at scala.reflect.internal.Symbols$Symbol.lock(Symbols.scala:482)
    at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1218)
    at scala.reflect.internal.Symbols$Symbol.initialize(Symbols.scala:1374)
    at scala.reflect.internal.Symbols$Symbol.privateWithin(Symbols.scala:1169)
    at scala.reflect.internal.Symbols$Symbol.hasAccessBoundary(Symbols.scala:1176)
    at scala.reflect.internal.HasFlags$class.isPublic(HasFlags.scala:111)
    at scala.reflect.internal.Symbols$Symbol.isPublic(Symbols.scala:112)
    at com.datastax.spark.connector.util.ReflectionUtil$$anonfun$2.apply(ReflectionUtil.scala:77)

Error Ocured during job for '1453743420000000' and Error Message is scala.MatchError: <error> (of class scala.reflect.internal.Types$ErrorType$)
    at com.datastax.spark.connector.util.ReflectionUtil$.returnType(ReflectionUtil.scala:113)

Эта ошибка возникает, когда я пытаюсь выполнить более 1 задания одновременно. Это пахнет проблемой многопоточности. не так ли? Эта ошибка возникает при загрузке данных из Cassandra (при выполнении моего первого действия) или при сохранении данных в Cassandra rdd.saveToCassandra(...)

Детали моей зависимости

    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.10</artifactId>
        <version>1.6.2</version>
    </dependency>

    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.10</artifactId>
        <version>1.6.2</version>
    </dependency>

    <dependency>
        <groupId>com.datastax.spark</groupId>
        <artifactId>spark-cassandra-connector_2.10</artifactId>
        <version>1.6.0</version>
    </dependency>

    <dependency>
        <groupId>com.datastax.cassandra</groupId>
        <artifactId>dse-driver</artifactId>
        <version>1.1.0</version>
    </dependency>

    <dependency>
        <groupId>com.datastax.cassandra</groupId>
        <artifactId>cassandra-driver-core</artifactId>
        <version>3.0.2</version>
    </dependency>

Журнал ошибок драйвера  введите описание изображения здесь

Любые предложения / помощь по этому поводу высоко ценятся. кто-нибудь сталкивался с этой проблемой?


person Balaji Reddy    schedule 09.04.2017    source источник
comment
Удалось ли вам это решить? Столкнитесь с той же проблемой и на моей стороне.   -  person Opster ES Ninja - Kamal    schedule 09.06.2017


Ответы (1)


Наконец проблема решена. Мое приложение и двоичные файлы Spark были построены на Scala 2.10. Кажется, что в Scala 2.10 есть проблема с отражением / многопоточностью, и она опубликована как предложение на некоторых форумах, которые я просмотрел.

Исправление в том, что я создал свое приложение на Scala 2.11 и использовал библиотеки Spark, созданные на основе 2.11, и проблема исчезла.

Обновленные зависимости

org.apache.spark искра-core_2.11 1.6.2

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.11</artifactId>
    <version>1.6.2</version>
</dependency>

<dependency>
    <groupId>com.datastax.spark</groupId>
    <artifactId>spark-cassandra-connector_2.11</artifactId>
    <version>1.6.0</version>
</dependency>

Надеюсь, это кому-то поможет.

person Balaji Reddy    schedule 20.06.2017