减去空数据框将返回与原始计数不同的计数

时间:2019-01-24 10:28:06

标签: apache-spark pyspark

我有2个数据框:original_df(具有许多行)和empty_df(空数据框)。 当我尝试从original_df中“减去” empty_df并计算两个数据帧时,结果是不同的:

schema = StructType([
    StructField("guid", StringType(), True)
])

empty_df = spark.createDataFrame(spark.sparkContext.emptyRDD(), 
                                 schema=schema)
original_df = spark.read.parquet('some_path')

diff_df = original_df.select('guid')
                     .subtract(empty_df.select('guid'))

print('Original DF count: ' + str(original_df.count()))
print('Empty DF count: ' + str(empty_df.count()))
print('Diff DF count: ' + str(diff_df.count()))

# Check difference
whats_different_df = original_df.select('guid')
                                .subtract(diff_df.select('guid'))

print('Difference between original and diff DF: ' + 
       str(whats_different_df.count()))

我希望作为输出: 原始送纸器数量:68724356 空DF计数:0 差异DF计数:68724356 原始DF与差异DF之间的差异:0

但是我有: 原始送纸器数量:68724356 空DF计数:0 差异DF计数: 68724294 原始DF与差异DF之间的差异:0

注意:我已经尝试了一个小例子(虚拟数据,而不是原始数据),并且按预期工作了

1 个答案:

答案 0 :(得分:0)

我找到了答案:加载original_df时,我需要删除重复项:

original_df = spark.read.parquet('some_path').drop_duplicates(['guid'])

因为减法功能等效于SQL中的“ EXCEPT DISTINCT”