【发布时间】:2017-11-16 14:16:57
【问题描述】:
作为 ETL 流程的一部分,我们每天都将数据从 Oracle 迁移到 Cassandra。一旦 Spark 作业完成,我想在两个数据库之间执行数据验证,以确保两个数据库同步。我们正在使用 DSE 5.1。您能否提供宝贵的意见以确保数据已正确迁移
【问题讨论】:
标签: apache-spark apache-spark-sql cassandra-2.0 spark-cassandra-connector
作为 ETL 流程的一部分,我们每天都将数据从 Oracle 迁移到 Cassandra。一旦 Spark 作业完成,我想在两个数据库之间执行数据验证,以确保两个数据库同步。我们正在使用 DSE 5.1。您能否提供宝贵的意见以确保数据已正确迁移
【问题讨论】:
标签: apache-spark apache-spark-sql cassandra-2.0 spark-cassandra-connector
我假设您拥有支持 Spark 的 DSE Max。 SparkSQL 应该最适合它。 首先,您使用 JDBC 连接到 Oracle https://spark.apache.org/docs/2.0.2/sql-programming-guide.html#jdbc-to-other-databases 我没有 Oracle DB,所以以下代码没有经过测试,请在运行前检查 JDBC URL 和驱动程序:
dse spark --driver-class-path ojdbc7.jar --jars ojdbc7.jar
scala> val oData = spark.read
.format("jdbc")
.option("url", "jdbc:oracle:thin:hr/hr@//localhost:1521/pdborcl")
.option("dbtable", "schema.tablename")
.option("user", "username")
.option("password", "password")
.load()
C* 数据已经映射到 SparkSQL 表。所以:
scala> cData = spark.sql("select * from keyspace.table");
您需要检查两者的架构和数据转换详细信息,以正确比较这些表。简单的集成检查:所有来自 Oracle 的数据都存在于 C* 中:
scala> cData.except(oData).count
0: Long
【讨论】: