我正在使用 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 guava-18.0.jar netty-all-4.0.23.Final.jar
使用上面的罐子,我可以连接到 cassandra 。我能够截断表和删除表。但我无法插入任何数据,即使是简单的插入查询也不行。
以下是代码:
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)
我究竟做错了什么 ?
请让我知道需要什么 jar 或者是否存在一些版本兼容性问题。
spark(1.5) 和 cassandra (?) 最稳定的版本是什么
提前致谢