Cassandra Datastax和Java - 建立连接的最佳方式

时间:2017-03-23 02:28:17

标签: java cassandra datastax

我正在研究从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

1 个答案:

答案 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