Java Spark 1.5和datastax-ddc-3.2.1 Cassandra依赖性罐?
我使用的是Spark 1.5和Cassandra 3.2.1。任何人都可以指定构建路径中需要存在哪些JAR来连接、查询和插入数据到Cassandra 现在我正在使用下面的罐子 spark-cassandra-connector_2.10-1.5.0-M3.jar apache-cassandra-clientutil-3.2.1.jar cassandra-driver-core-3.0.0-beta1-bb1bce4-SNAPSHOT-shaded.jar spark-assembly-1.5.1-hadoop2.0.0-mr1-cdh4.2.0.jar 番石榴-18.0.jar netty-all-4.0.23.Final.jar 有了以上的罐子,我可以连接到卡桑德拉。我可以截断表,删除表。但我无法插入任何数据,即使是简单的插入查询 代码如下:Java Spark 1.5和datastax-ddc-3.2.1 Cassandra依赖性罐?,java,guava,spark-cassandra-connector,cassandra-3.0,Java,Guava,Spark Cassandra Connector,Cassandra 3.0,我使用的是Spark 1.5和Cassandra 3.2.1。任何人都可以指定构建路径中需要存在哪些JAR来连接、查询和插入数据到Cassandra 现在我正在使用下面的罐子 spark-cassandra-connector_2.10-1.5.0-M3.jar apache-cassandra-clientutil-3.2.1.jar cassandra-driver-core-3.0.0-beta1-bb1bce4-SNAPSHOT-shaded.jar spark-assembly-1.5
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import com.datastax.driver.core.Session;
import com.datastax.spark.connector.cql.CassandraConnector;
public class Test {
public static void main(String[] args) {
JavaSparkContext ctx = new JavaSparkContext(new SparkConf().setMaster("spark://blr-lt-203:7077").set("spark.cassandra.connection.host", "blr-lt-203").setAppName("testinsert").set("spark.serializer" ,"org.apache.spark.serializer.KryoSerializer").set("spark.kryoserializer.buffer.max" , "1024mb"));
CassandraConnector connector = CassandraConnector.apply(ctx.getConf());
Session session = connector.openSession();
session.execute("insert into test.table1 (name) values ('abcd')") ;
session.close();
ctx.stop();
}
}
以下是日志:
16/03/28 21:24:52 INFO BlockManagerMaster: Trying to register BlockManager
16/03/28 21:24:52 INFO BlockManagerMasterEndpoint: Registering block manager localhost:50238 with 944.7 MB RAM,BlockManagerId(driver, localhost, 50238)
16/03/28 21:24:52 INFO BlockManagerMaster: Registered BlockManager
16/03/28 21:24:53 INFO NettyUtil: Did not find Netty's native epoll transport in the classpath, defaulting to NIO.
16/03/28 21:24:53 INFO Cluster: New Cassandra host localhost/127.0.0.1:9042 added
16/03/28 21:24:53 INFO CassandraConnector: Connected to Cassandra cluster: Test Cluster
它只是在这里停了一段时间,然后超时,下面是一个例外:
Exception in thread "main" com.datastax.driver.core.exceptions.UnavailableException: Not enough replicas available for query at consistency LOCAL_QUORUM (2 required but only 1 alive)
提前感谢这个问题是由于谷歌的番石榴库之间的冲突造成的 解决方案是对spark cassandra连接器依赖项中的番石榴库进行着色。您可以使用maven shade插件来实现这一点。 这是我的pom.xml,它可以遮住guava库
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.pc.test</groupId>
<artifactId>casparktest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>casparktest</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<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_2.10</artifactId>
<version>1.5.0</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.0.0-beta1</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>
4.0.0
com.pc.test
卡斯帕克试验
0.0.1-快照
罐子
卡斯帕克试验
http://maven.apache.org
UTF-8
org.apache.spark
spark-core_2.10
1.5.0
朱尼特
朱尼特
3.8.1
测试
com.datasax.spark
spark-cassandra-connector_2.10
1.5.0
com.datasax.cassandra
卡桑德拉驱动核心
3.0.0-beta1
org.apache.maven.plugins
maven阴影插件
2.3
包裹
阴凉处
*:*
META-INF/*.SF
META-INF/*.DSA
META-INF/*.RSA
谷歌
com.pointcross.shade.google
假的
真的
之后,您将执行maven构建,该构建将生成一个jar,其中包含pom.xml中提到的所有依赖项,并对guava库进行着色,您可以使用这些库提交spark作业。由于google的guava库之间存在冲突,因此出现了问题 解决方案是对spark cassandra连接器依赖项中的番石榴库进行着色。您可以使用maven shade插件来实现这一点。 这是我的pom.xml,它可以遮住guava库
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.pc.test</groupId>
<artifactId>casparktest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>casparktest</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<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_2.10</artifactId>
<version>1.5.0</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.0.0-beta1</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>
4.0.0
com.pc.test
卡斯帕克试验
0.0.1-快照
罐子
卡斯帕克试验
http://maven.apache.org
UTF-8
org.apache.spark
spark-core_2.10
1.5.0
朱尼特
朱尼特
3.8.1
测试
com.datasax.spark
spark-cassandra-connector_2.10
1.5.0
com.datasax.cassandra
卡桑德拉驱动核心
3.0.0-beta1
org.apache.maven.plugins
maven阴影插件
2.3
包裹
阴凉处
*:*
META-INF/*.SF
META-INF/*.DSA
META-INF/*.RSA
谷歌
com.pointcross.shade.google
假的
真的
之后,您将进行maven构建,生成一个jar,其中包含pom.xml中提到的所有依赖项,并对您可以提交spark作业的guava库进行着色处理。我也面临同样的问题,您的问题解决了吗?我也面临同样的问题,您的问题解决了吗??