2016-09-20 7 views
3

私はいくつかのパフォーマンス上の問題を抱えており、あなたにはいくつか質問があります:) 私はスカラアプリケーションを作成しました。このアプリケーションは、ライブの中で、cassandraデータベースからのセッションのようないくつかの統計を計算します。 APIを作成するためにhttpフレームワークとしてスプレーを使用しました。 私は、cassandraの結果を減らして計算するためにsparkを使いました。 spark-submitで私のアプリケーションをsparkで入れました。spark on application web?

これは、直接アプリケーションを開発するための最良の方法だと思いますか?または、sparkの外に1つのアプリケーション(http)を作成し、sparkでcassandraのデータを計算するためにのみ他のアプリケーションを呼び出す必要がありますか?

私のテストでは3つのサーバー(1つは32Gの8つのコア、1つは64G、8つのコア、もう1つは64Gの12コア)です。私は瞬間のためにすることができます)。 私はスタンドアロンモードを使用しています。 spark_default.shで 私の設定:

spark.deploy.defaultCores=28 
spark.executor.memory=30G 

そして、それは遅い、それが3スパークtraitementで9秒を取る瞬間のために:コレクト

  • マップ、SORTBYと1(4Sを取る)
  • 和演算(3Sを取る)
  • だけのような結果のための和演算(2Sを取る)

これは:

{"結果": "成功"、 "リスト":[{"アイテム": "1474236000"、 "値":6}、{"アイテム": "1474239600" :3}、{"item": "1474243200"、 "value":3}、{"item": "1474246800"、 "value":3}、{"item": "1474250400"、 "value":3 「値」:「アイテム」:「アイテム」:「アイテム」:「1474257600」、「値」:4アイテム、「アイテム」:「1474261200」、「値」:11アイテム、 {"item": "1474264800"、 "value":1}、{"item": "1474268400"、 "value":3}、{"item": "1474272000"、 "value":18} 「item」:「1474275600」、「value」:6}、「item」:「1474279200」、「value」:4}、「item」:「1474282800」、「value」:2}、{item> : "1474296400"、 "値":2}、{"アイテム": "1474293600"、 "値":4}、{"アイテム": "1474297200"、 "値":10}、{"アイテム" {1474304400}、{値}:8}、{1474308000}、{値}:6}、{"アイテム": "1474311600" "値":4}、{"アイテム": "1474322400"、 "値"}:値 ":6}]、" nb_session " :137.0、 "old_nb_session":161}

私には何か提案がありますか?それはとても遅いよ、なぜ私は理解していない:(

どうもありがとう

+0

私はあなたがアプリケーションにスパークを分離する必要があると思います。スパークはサービスのように行動すべきです。 https://github.com/spark-jobserver/spark-jobserverが役立つかもしれません。 – giaosudau

+0

さて、私は個人的には遅くないと主張します。これらは印象的な待ち時間ではありませんが、Sparkは遅延の少ないジョブ用に設計されたものではありません。カッサンドラと直接対峙してみませんか?分離については確かに良いアイデアです。 – zero323

答えて

1

を私はカサンドラとCQLを直接操作することをアドバイスします。あなたは、常にユーザー定義を作成することができますCQLのすべてを反映することができない場合-function後(UDF)既定。

https://docs.datastax.com/en/cql/3.3/cql/cql_using/useCreateUDF.html

、カサンドラ2.2は、Java、JavaScriptの関数を定義するサポートしています。このようなPythonの、ルビー、及びスカラなどの他のスクリプト言語は、追加することによって追加することができますクラスパートへのJAR h。 JARファイルを$ CASSANDRA_HOME/lib/jsr223/[言語]/[jar-name]にインストールします。言語は「JRubyの」、「Jythonの」、または「Scalaの」(複数の要求にわたって)Apacheのスパーク内のデータを維持するだろう低遅延のApacheスパーク溶液を作製するためのオプションの

ひとつだけですjarファイル各リクエストでキャッシュされたデータに対してクエリを実行します(そして、load-from-cassandraの部分はスキップします)。これは自明ではありません。