2017-03-23 10 views
0

私はJavaからCassandraに接続する最良の方法を研究しています。私はローカルホスト上で何らかのチャットアプリケーションを行っています(新しいメッセージの作成、更新、削除を可能にします)が、ベストプラクティスを研究したいと思います。誰も私に最高のソリューションを選ぶ手伝いができますか?Cassandra DatastaxとJava - 接続を設定する最良の方法

最初の一例は、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; 
    } 

だから、私はまた、ビルダーは自動的に1が存在する場合は、既存のSparkContextを再利用し、それがない場合SparkContextを作成するスパーク2.xのための一例を得ました存在しない。ビルダーで設定された設定オプションは、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; 
} 

私もプールのオプションを研究したが同様に、セッションの例の1が見つかりました:だから私は(私は、単一の実行するつもり接続を行うための最も効率的な方法は何か、疑問に思う

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の例はどうでしょう?(SparkSessionに既に含まれているかどうかは100%確信していません) 関連する質問がありましたが、私には十分な情報がありません:https://stackoverflow.com/questions/42148056/cassandra-datastax-optimal-poolingoption

答えて

1

スパークを使用してcassandraに接続しようとしていますか、またはJavaをCassandra接続に接続しようとしていますか?

Sparkは、分析ワークフローではほとんどの場合使用され、単一の挿入/更新文は使用されません。

私は、通常のdatastaxのJavaドライバーを使用することをお勧め:

プーリングオプションの質問に答えたよう

http://docs.datastax.com/en/developer/java-driver-dse/1.1/

、あなたはこれらのパラメータをタッチする必要はありませんし、デフォルト値は、作業を行う必要があります。 - Javaの - カサンドラDB私はRESTアプリケーション角度JSを得た

http://docs.datastax.com/en/drivers/java/2.2/com/datastax/driver/core/PoolingOptions.html

+0

@nervsv:ここだ、それがどのように動作するかの説明があります。私は、JavaとCassandraの間の接続を確立する最良の方法を研究しています(メッセージの取得、メッセージの投稿など) –

関連する問題