2016-10-14 19 views
2

akka-persistence-jdbcプラグインとpostgresqlをバックエンドとして使用して実行中のプロジェクトがあります。Akka Persistence:jdbc(postgres)からcassandraへの移行

今、akka-persistence-cassandraに移行したいと考えています。 しかし、私は既存のイベント(postgresの4GB以上のサイズ)をcassandraにどのように変換できますか?

手動移行プログラムを作成する必要がありますか?ポストグルから読んで、カサンドラで正しいフォーマットを書いていますか?

答えて

3

これは古典的な移行の問題です。これには複数の解決策があります。 (スパークデータフレーム、スパークSQLと呼ばれる)

  1. Spark SQL and Spark Cassandra Connector:スパークJDBCは、APIを使用すると、任意のJDBCソースから読み取ることができます。あなたはそれを分割することによって塊で読むことができます。そうでなければ、あなたはメモリから出ます。セグメンテーションは移行を並行させます。その後、Cassandra Spark ConnectorによってCassandraにデータを書き込みます。これは、私の仕事ではるかに簡単で効率的な方法です。

  2. Java Agents: Javaエージェントは、プレーンJDBCまたは他のライブラリに基づいて作成し、Datastaxドライバを使用してCassandraに書き込むことができます。スパークプログラムは、マルチマシン - マルチスレッド方法で実行され、何かが自動的に間違っている場合に回復します。しかし、このようなエージェントを手動で作成すると、エージェントは単一のマシン上でのみ実行され、マルチスレッドもコード化する必要があります。

  3. Kafka Connectors:Kafkaはメッセージブローカーです。間接的に使用して移行することができます。 Kafkaには、異なるデータベースに読み書きできるコネクタがあります。 JDBCコネクタを使用すると、PostGresとCassandraコネクタから読み込み、Cassandraに書き込むことができます。セットアップは簡単ではありませんが、「コーディングは必要ありません」という利点があります。

  4. ETL Systems:一部のETLシステムではCassandraがサポートされていますが、何も試していません。

私は、Sparkカサンドラを使用していくつかの利点を見て、移行のためにSQLをスパーク、そのうちのいくつかは以下のとおりです。

  1. コードは簡潔でした。スパークノードがダウンしているか、スレッド/ワーカーが失敗し、ジョブである場合には、スパークマスターUIに難40行
  2. マルチマシン(再びマルチ各マシン上でスレッド)
  3. ジョブの進捗状況および統計
  4. フォールトtolerance-ました他のノードで自動的に起動 - 非常に長時間実行されているジョブに適しています

スパークがわからない場合、書き込みエージェントは4GBのデータで問題ありません。

関連する問題