为什么在使用spark.table()。count()和df.count()时行计数不同?

时间:2019-07-09 14:05:54

标签: apache-spark pyspark

我正在尝试使用Spark读取存储在非常大的表(包含181,843,820行和50列)中的数据,这是我的训练集,但是,当我使用spark.table()时我注意到调用DataFrame的count()时,行数与行数不同,我当前正在使用PyCharm。

我想对表中的数据进行预处理,然后才能将其用作我需要训练的模型的训练集。 加载表时,我发现加载表的DataFrame小得多(在这种情况下为数据的10%)。

我尝试过的事情:

  
      
  1. 提高了spark.kryoserializer.buffer.max的容量。
  2.   
  3. 将较小的表加载到DataFrame(70k行)中,实际上在count()输出中没有发现差异。
  4.   

此示例与我为调查问题而运行的代码非常相似。

df = spark.table('myTable')
print(spark.table('myTable').count()) # output: 181,843,820
print(df.count()) # output 18,261,961

我希望两个输出都相同(原始181m),但是它们却不一样,而且我不明白为什么。

0 个答案:

没有答案