我正在研究从Java到Cassandra建立连接的最佳方法,并找到了一些如何做到这一点的示例。我正在我的localhost上做某种聊天应用程序(允许创建新消息,更新或删除),但我也想研究最佳实践。任何人都可以帮我选择最好的解决方案吗?
第一个例子是Spark 1.6:
public static JavaSparkContext getCassandraConnector(){
SparkConf conf = new SparkConf();
conf.setAppName("Chat");
conf.set("spark.driver.allowMultipleContexts", "true");
conf.set("spark.cassandra.connection.host", "127.0.0.1");
conf.set("spark.rpc.netty.dispatcher.numThreads","2");
conf.setMaster("local[2]");
JavaSparkContext sc = new JavaSparkContext(conf);
return sc;
}
因此,我还得到了Spark 2.x的一个示例,其中构建器将自动重用现有的SparkContext(如果存在)并创建SparkContext(如果它不存在)。在I / O期间,构建器中设置的配置选项会自动传播到Spark和Hadoop。
public static SparkSession getSparkSession(){
SparkSession sparkSession = SparkSession
.builder()
.appName("Chat")
.config("spark.driver.allowMultipleContexts","true")
.config("spark.sql.warehouse.dir", "/file:C:/temp")
.config("spark.cassandra.connection.host", "127.0.0.1")
.config("spark.cassandra.connection.port", "9042")
.master("local[2]")
.getOrCreate();
return sparkSession;
}
我还研究了Pooling Options,但是找到了Session的示例,例如:
public static Session getPoolSession(){
PoolingOptions poolingOptions = new PoolingOptions();
poolingOptions
.setCoreConnectionsPerHost(HostDistance.LOCAL, 4)
.setMaxConnectionsPerHost( HostDistance.LOCAL, 10)
.setMaxRequestsPerConnection(HostDistance.LOCAL, 32768)
.setMaxRequestsPerConnection(HostDistance.REMOTE, 2000)
.setHeartbeatIntervalSeconds(120);
Cluster cluster = Cluster.builder()
.addContactPoints("127.0.0.1")
.withPoolingOptions(poolingOptions)
.build();
Session session = cluster.connect("chat");
return session;
}
所以我想知道,建立连接的最有效方法是什么(我将执行单个语句和PreparedStatements)。我认为Spark 1.6的第一种方式不如2.x,但2.x的Pooling Option示例怎么样(我不是100%确定它是否已包含在SparkSession中)? 我找到了相关问题,但没有足够的信息给我:https://stackoverflow.com/questions/42148056/cassandra-datastax-optimal-poolingoption
答案 0 :(得分:1)
您是尝试使用spark连接到cassandra还是只使用java连接到Cassandra?
Spark大部分时间用于分析工作流程,单个插入/更新语句不是用例。
我建议使用常规datastax java驱动程序:
http://docs.datastax.com/en/developer/java-driver-dse/1.1/
如汇总选项问题所述,您不需要触摸这些参数,默认值应该可以完成。以下是对其工作原理的解释:
http://docs.datastax.com/en/drivers/java/2.2/com/datastax/driver/core/PoolingOptions.html