我有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
注意:我已经尝试了一个小例子(虚拟数据,而不是原始数据),并且按预期工作了
答案 0 :(得分:0)
我找到了答案:加载original_df时,我需要删除重复项:
original_df = spark.read.parquet('some_path').drop_duplicates(['guid'])
因为减法功能等效于SQL中的“ EXCEPT DISTINCT”