L'eccezione esatto è il seguenteDatastax Cassandra driver gettando CodecNotFoundException
com.datastax.driver.core.exceptions.CodecNotFoundException: Codec non trovato per il funzionamento richiesto: [varchar < -> java.math.BigDecimal]
Queste sono le versioni del software che sto usando Spark 1.5 Datastax-cassandra 3.2.1 CDH 5.5.1
il codice che sto cercando di eseguire è un programma di Spark utilizzando l'API Java e si legge in sostanza i dati (csv's) per m hdfs e lo carica in tavolini cassandra. Sto usando il connettore della candela-cassandra. Ho avuto un sacco di problemi riguardanti il conflitto della libreria guava di google che inizialmente sono stato in grado di risolvere oscurando la libreria guava e costruendo un vaso snapshot con tutte le dipendenze.
Tuttavia, sono riuscito a caricare i dati per alcuni file, ma per alcuni file ottengo l'eccezione Codec. Quando ho effettuato una ricerca su questo argomento, ho ottenuto questi thread seguenti sullo stesso problema.
https://groups.google.com/a/lists.datastax.com/forum/#!topic/java-driver-user/yZyaOQ-wazk
https://groups.google.com/a/lists.datastax.com/forum/#!topic/java-driver-user/yZyaOQ-wazk
Dopo aver attraversato questi discussione quello che ho capito è o si tratta di una versione errata del cassandra-pilota che sto usando. Oppure esiste ancora un problema di classe relativo alla libreria guava in quanto cassandra 3.0 e versioni successive usano guava 16.0.1 e le discussioni precedenti dicono che potrebbe esserci una versione inferiore del guava presente nel percorso della classe.
Ecco il file pom.xml
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.5.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.datastax.spark</groupId>
<artifactId>spark-cassandra-connector-java_2.10</artifactId>
<version>1.5.0-M3</version>
</dependency>
<dependency>
<groupId>org.apache.cassandra</groupId>
<artifactId>cassandra-clientutil</artifactId>
<version>3.2.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<relocations>
<relocation>
<pattern>com.google</pattern>
<shadedPattern>com.pointcross.shaded.google</shadedPattern>
</relocation>
</relocations>
<minimizeJar>false</minimizeJar>
<shadedArtifactAttached>true</shadedArtifactAttached>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
e queste sono le dipendenze che sono stati scaricati utilizzando il pom sopra
spark-core_2.10-1.5.0.jar
spark-cassandra-connector- java_2.10-1.5.0-M3.jar
spark-cassandra-connector_2.10-1.5.0-M3.jar
spark-repl_2.10-1.5.1.jar
spark-bagel_2.10-1.5.1.jar
spark-mllib_2.10-1.5.1.jar
spark-streaming_2.10-1.5.1.jar
spark-graphx_2.10-1.5.1.jar
guava-16.0.1.jar
cassandra-clientutil-3.2.1.jar
cassandra-driver-core-3.0.0-alpha4.jar
sopra sono alcune delle principali dipendenze nella mia snap-shot vaso .
Y è il CodecNotFoundException? È a causa del percorso di classe (guava)? o cassandra-driver (cassandra-driver-core-3.0.0-alpha4.jar per datastax cassandra 3.2.1) oa causa del codice.
Un altro punto sono tutte le date che sto inserendo nelle colonne il cui tipo di dati è il timestamp.
Anche quando eseguo uno spark-submit, vedo il percorso della classe nei log, Ci sono altre versioni di guava che sono sotto le librerie di hadoop. R questi causando il problema?
Come si specifica un percorso classe specifico per l'utente mentre si esegue una richiesta di attivazione. Questo aiuterà?
Sarei lieto di ottenere alcuni punti su questi. Grazie
seguito viene descritta la stacktrace
com.datastax.driver.core.exceptions.CodecNotFoundException: Codec not found for requested operation: [timestamp <-> java.lang.String]
at com.datastax.driver.core.CodecRegistry.notFound(CodecRegistry.java:689)
at com.datastax.driver.core.CodecRegistry.createCodec(CodecRegistry.java:550)
at com.datastax.driver.core.CodecRegistry.findCodec(CodecRegistry.java:530)
at com.datastax.driver.core.CodecRegistry.codecFor(CodecRegistry.java:485)
at com.datastax.driver.core.AbstractGettableByIndexData.codecFor(AbstractGettableByIndexData.java:85)
at com.datastax.driver.core.BoundStatement.bind(BoundStatement.java:198)
at com.datastax.driver.core.DefaultPreparedStatement.bind(DefaultPreparedStatement.java:126)
at com.cassandra.test.LoadDataToCassandra$1.call(LoadDataToCassandra.java:223)
at com.cassandra.test.LoadDataToCassandra$1.call(LoadDataToCassandra.java:1)
at org.apache.spark.api.java.JavaPairRDD$$anonfun$toScalaFunction$1.apply(JavaPairRDD.scala:1027)
at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
at org.apache.spark.util.Utils$.getIteratorSize(Utils.scala:1555)
at org.apache.spark.rdd.RDD$$anonfun$count$1.apply(RDD.scala:1121)
at org.apache.spark.rdd.RDD$$anonfun$count$1.apply(RDD.scala:1121)
at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1850)
at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1850)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66)
at org.apache.spark.scheduler.Task.run(Task.scala:88)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:214)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Ho anche avuto
com.datastax.driver.core.exceptions.CodecNotFoundException: Codec not found for requested operation: [Math.BigDecimal <-> java.lang.String]
Puoi condividere la traccia dello stack? –
Ho condiviso lo stacktrace –