计数不匹配 - 同时查询oracle数据库会话& oracle通过spark sql

时间:2017-08-25 17:00:47

标签: oracle scala apache-spark apache-spark-sql

这听起来很奇怪,我有一个oracle数据库,我试图通过spark sql从oracle数据库中进行选择,但我查找的数据确实存在于数据库中,但我在发出的请求中找不到它来自斯卡拉。所以我试图计算出口数据的数量

select count (*) from TMP_STRUCTURE 
从oracle控制台

我得到了373799

当我把

  val sparkSession = SparkSession.builder.master("local").appName("spark session example").getOrCreate()
  //connect to table TMP_STRUCTURE oracle
  val spark = sparkSession.sqlContext
  val df = spark.load("jdbc",
    Map("url" -> "jdbc:oracle:thin:IPTECH/IPTECH@//localhost:1521/XE",
      "dbtable" -> "TMP_STRUCTURE"))


    println(df.count())
373797

我找不到原因?

请帮助。

1 个答案:

答案 0 :(得分:2)

这是不可能的,因为可能有2次机会

  • 案例1:您可能正在从oracle会话中读取未提交的数据,并且您可能正在通过spark sql读取已提交的数据集。 (执行提交并再次检查)

  • 案例2:从oracle会话中,您可能连接到具有几乎相同行数的不同数据库。并且可能使用了不同的数据库用于spark sql (确保/交叉检查您尝试连接的两个数据库是否相同)