【问题标题】:Akka Persistence: migrating from jdbc (postgres) to cassandraAkka Persistence:从 jdbc (postgres) 迁移到 cassandra
【发布时间】:2017-02-23 14:55:01
【问题描述】:

我有一个使用 akka-persistence-jdbc 插件和 postgresql 作为后端的正在运行的项目。

现在我想迁移到 akka-persistence-cassandra。 但是如何将现有事件(postgres 中超过 4GB 大小)转换为 cassandra?

我应该编写手动迁移程序吗?从 postgres 读取并在 cassandra 中写入正确的格式?

【问题讨论】:

  • 是什么让你想从 Postgres 迁移出去?
  • @DamianW 因为 postgres 插件处于测试阶段!

标签: postgresql jdbc cassandra akka-persistence


【解决方案1】:

这是一个经典的迁移问题。有多种解决方案。

  1. Spark SQL and Spark Cassandra Connector:Spark JDBC(称为 Spark Dataframe、Spark SQL)API 允许您从任何 JDBC 源读取。您可以通过分段读取它,否则您将耗尽内存。分段也使迁移并行。然后通过 Cassandra Spark Connector 将数据写入 Cassandra。这是迄今为止我在任务中使用的最简单有效的方法。

  2. Java Agents: Java Agent 可以基于普通的 JDBC 或其他库编写,然后使用 Datastax 驱动程序写入 Cassandra。 Spark 程序在多机上运行 - 多线程方式并在出现问题时自动恢复。但是如果你手动编写这样的代理,那么你的代理只能在单机上运行,​​多线程也需要编码。

  3. Kafka Connectors:Kafka 是一个消息传递代理。它可以间接用于迁移。 Kafka 具有可以读取和写入不同数据库的连接器。您可以使用 JDBC 连接器从 PostGres 中读取数据,并使用 Cassandra 连接器向 Cassandra 写入数据。设置起来并不容易,但它具有“不涉及编码”的优点。

  4. ETL Systems: 一些 ETL 系统支持 Cassandra,但我没有亲自尝试过。

我看到了使用 Spark Cassandra 和 Spark SQL 进行迁移的一些优势,其中一些是:

  1. 代码简洁。不到 40 行
  2. 多机(同样在每台机器上多线程)
  3. Spark Master UI 中的作业进度和统计信息
  4. 容错 - 如果 spark 节点关闭或线程/worker 失败,则作业会自动在其他节点上启动 - 适用于长时间运行的作业

如果您不了解 Spark,那么对于 4GB 数据,编写代理是可以的。

【讨论】:

    猜你喜欢
    • 2021-01-30
    • 1970-01-01
    • 2018-06-19
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 2016-09-24
    相关资源
    最近更新 更多