首页 > 解决方案 > Spark:记录计数不匹配

问题描述

我很困惑,因为我面临着一个奇怪的情况。我的 spark 应用程序从 Oracle 数据库读取数据并使用以下指令将其加载到数据框中:

  private val df = spark.read.jdbc(
    url = [the jdbc url],
    table="(" + [the query] + ") qry",
    properties= [the oracle driver]
  )

然后,我将这个数据框中的记录数保存在一个变量中:

val records = df.count()

我使用数据框架构创建了一个配置单元表([我的表]),并将数据框的内容转储在其上:

df.write
  .mode(SaveMode.Append)
  .insertInto([my hive db].[my table])

好吧,这就是我迷路的地方;当我select count(*)对正在加载数据框的配置单元表执行 a 时,“有时”配置单元中的记录比records变量中的记录多。

你能想到这种不匹配的根源是什么吗?


*与可能的重复有关,我的问题有所不同。我没有用不同的值多次计算我的数据框。我计算了我的数据框上的记录一次。我将数据帧转储到 hive 中,并计算 hive 表中的记录,有时 hive 中的记录多于我的计数。*


非常感谢您提前。

标签: apache-sparkapache-spark-sql

解决方案


推荐阅读