我们每天都会将数据从Oracle迁移到Cassandra,作为ETL流程的一部分。我想在Spark作业完成后在2个数据库之间执行数据验证,以确保两个数据库同步。我们正在使用DSE 5.1。您能否提供宝贵的意见,以确保数据已正确迁移
答案 0 :(得分:0)
我认为你有DSE Max支持Spark。 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