У меня есть 2 фрейма данных: original_df (с количеством строк) и empty_df (пустой фрейм данных).Когда я пытаюсь «вычесть» empty_df из original_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()))
Я ожидаю в качестве вывода: Исходный счетчик DF: 68724356 Пустой счетчик DF: 0 Счетчик DIF: 68724356 Разницамежду оригиналом и разностью DF: 0
Но у меня было: Исходное количество разрядов: 68724356 Пустое количество разрядов: 0 Разное разность разметки: 68724294 Разница между разницей оригинала и разности: 0
Примечание: я попытался с небольшим примером (фиктивные данные, а не исходный), и он работал как ожидалось