/ Exceção NoSuchMethod ao ler tabelas Cassandra do Pyspark - apache-spark, apache-spark-sql, cassandra-2.0, spark-cassandra-connector

Exceção NoSuchMethod ao ler tabelas Cassandra do Pyspark - apache-spark, apache-spark-sql, cassandra-2.0, spark-cassandra-connector

Eu estou tentando ler dados do Cassandra keyspace no Pyspark.

Aqui está o meu código:

from pyspark import SparkContext
from pyspark import SparkConf
from pyspark.sql import SQLContext
conf = SparkConf()
conf.setMaster("local[4]")
conf.setAppName("Spark Cassandra")
conf.set("spark.cassandra.connection.host","127.0.0.1")
sqlContext.read
.format("org.apache.spark.sql.cassandra")
.options(table="kv", keyspace="tutorialspoint")
.load().show()

Estou executando no CentOS 6.7 VM, Spark 1.5, Hadoop 2.6.0, Cassandra 2.1.13

Iniciando o console do pyspark com o comando:

pyspark --packages com.datastax.spark:spark-cassandra-connector_2.10:1.5.0-M2

Tentei lançar o console pyspark para a versão diferente do pacote do conector cassandra, mas isso não ajudou.

Aqui está a mensagem de erro que enfrento no console ao fazer a leitura:

Py4JJavaError: Ocorreu um erro ao chamar o29.load. java.lang.NoSuchMethodError: com.google.common.reflect.TypeToken.isPrimitive () Z em com.datastax.driver.core.TypeCodec. (TypeCodec.java:142) em com.datastax.driver.core.TypeCodec. (TypeCodec.java:136) em com.datastax.driver.core.TypeCodec $ BlobCodec. (TypeCodec.java:609) em com.datastax.driver.core.TypeCodec $ BlobCodec. (TypeCodec.java:606) em com.datastax.driver.core.CodecRegistry. (CodecRegistry.java:147) em com.datastax.driver.core.Configuration $ Builder.build (Configuration.java:259) em com.datastax.driver.core.Cluster $ Builder.getConfiguration (Cluster.java:1135) em com.datastax.driver.core.Cluster. (Cluster.java:111) em com.datastax.driver.core.Cluster.buildFrom (Cluster.java:178) em com.datastax.driver.core.Cluster $ Builder.build (Cluster.java:1152) em com.datastax.spark.connector.cql.DefaultConnectionFactory $ .createCluster (CassandraConnectionFactory.scala: 85) em com.datastax.spark.connector.cql.CassandraConnector $ .com $ datastax $ spark $ connector $ cql $ CassandraConnector $$ createSession (CassandraConnector.scala: 155) em com.datastax.spark.connector.cql.CassandraConnector $$ anonfun $ 2.apply (CassandraConnector.scala: 150) em com.datastax.spark.connector.cql.CassandraConnector $$ anonfun $ 2.apply (CassandraConnector.scala: 150) em com.datastax.spark.connector.cql.RefCountedCache.createNewValueAndKeys (RefCountedCache.scala: 31) em com.datastax.spark.connector.cql.RefCountedCache.acquire (RefCountedCache.scala: 56) em com.datastax.spark.connector.cql.CassandraConnector.openSession (CassandraConnector.scala: 81) em com.datastax.spark.connector.cql.CassandraConnector.withSessionDo (CassandraConnector.scala: 109) em com.datastax.spark.connector.cql.CassandraConnector.withClusterDo (CassandraConnector.scala: 120) em com.datastax.spark.connector.cql.Schema $ .fromCassandra (Schema.scala: 241) em org.apache.spark.sql.cassandra.CassandraSourceRelation (CassandraSourceRelation.scala: 47) em org.apache.spark.sql.cassandra.CassandraSourceRelation $ .apply (CassandraSourceRelation.scala: 184) em org.apache.spark.sql.cassandra.DefaultSource.createRelation (DefaultSource.scala: 57) em org.apache.spark.sql.execution.datasources.ResolvedDataSource $ .apply (ResolvedDataSource.scala: 125) em org.apache.spark.sql.DataFrameReader.load (DataFrameReader.scala: 114) uma

Respostas:

1 para resposta № 1

É por causa dos conflitos de versão do Guava. O Spark Cassandra Connector e o Hadoop usam diferentes versões de Guava. https://datastax-oss.atlassian.net/browse/SPARKC-365 e um PR pendente para corrigi-lo: https://github.com/datastax/spark-cassandra-connector/pull/968