Cassandra Datastax 和 Java - 建立连接的最佳方式
Cassandra Datastax and Java - best way to set up connection
我正在研究从我的 Java 连接到 Cassandra 的最佳方式,并找到了一些如何做到这一点的示例。我正在我的本地主机上做某种聊天应用程序(将允许创建新消息、更新消息或删除消息),但我也想研究最佳实践。谁能帮我选择一个最好的解决方案?
第一个例子是 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 中)?
我找到了相关问题,但没有足够的信息给我:
您是尝试使用 spark 连接到 cassandra 还是只是 java 连接到 Cassandra?
Spark 大部分时间用于分析工作流,单个 insert/update 语句不是它的用例。
我建议使用常规的 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
我正在研究从我的 Java 连接到 Cassandra 的最佳方式,并找到了一些如何做到这一点的示例。我正在我的本地主机上做某种聊天应用程序(将允许创建新消息、更新消息或删除消息),但我也想研究最佳实践。谁能帮我选择一个最好的解决方案?
第一个例子是 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 中)?
我找到了相关问题,但没有足够的信息给我:
您是尝试使用 spark 连接到 cassandra 还是只是 java 连接到 Cassandra?
Spark 大部分时间用于分析工作流,单个 insert/update 语句不是它的用例。
我建议使用常规的 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