spark-sql в google dataproc из sbt scala

Используя кластер Google Dataproc Spark, моя сборочная банка sbt может получить доступ к Cassandra через SparkContext.

Однако, когда я пытаюсь получить доступ через sqlContext, я получаю классы spark sql, не найденные в удаленном кластере, хотя я считаю, что кластер dataproc должен быть подготовлен для spark sql.

java.lang.NoClassDefFoundError: org/apache/spark/sql/types/UTF8String$
        at org.apache.spark.sql.cassandra.CassandraSQLRow$$anonfun$fromJavaDriverRow$1.apply$mcVI$sp(CassandraSQLRow.scala:50)
        at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala

мой sbt-файл:

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % "1.5.0" % "provided",
  "org.apache.spark" %% "spark-sql" % "1.5.0" % "provided",
  "com.datastax.spark" %% "spark-cassandra-connector" % "1.4.0"
)

Отключение «при условии» на spark-sql помещает меня в ад слияния дубликатов jar.

Спасибо за любую помощь.


person navicore    schedule 04.11.2015    source источник


Ответы (1)


Похоже, вам также нужна версия 1.5.0 spark-cassandra-connector, чтобы обеспечить совместимость ваших классов. Вот коммит , который обновил коннектор cassandra до версии 1.5.0, и вы можно увидеть, что он удаляет импорт org.apache.spark.sql.types.UTF8String и вместо этого добавляет import org.apache.spark.unsafe.types.UTF8String, изменяя соответствующие строки в CassandraSQLRow.scala:

       data(i) = GettableData.get(row, i)
       data(i) match {
         case date: Date => data.update(i, new Timestamp(date.getTime))
-        case str: String => data.update(i, UTF8String(str))
+        case bigInt: BigInteger => data.update(i, new JBigDecimal(bigInt))
+        case str: String => data.update(i, UTF8String.fromString(str))
         case set: Set[_] => data.update(i, set.toSeq)
         case _ =>
       }

Хотя кажется, что в Maven Central для коннектора cassandra, вы все равно сможете получить последний коннектор вехи 1.5.0-M2 для работы с вашим кодом.

EDIT: дополнительная ссылка на таблицу совместимости из GitHub README.md соединителя Cassandra

person Dennis Huo    schedule 04.11.2015
comment
Большое спасибо @dennis, это похоже на ответ. попробуйте сейчас, но 1.5.0-M2 дает проблемы с дедупликацией сборки с io.netty. мне все-таки придется освежить свои знания о sbt deps... скоро выложу результаты... - person navicore; 04.11.2015