Я вижу, что вы сохраняете вывод после разделения. Вы можете использовать partitionPy
при записи следующим образом:
dfSource = spark.createDataFrame([
['a', True],
['b', False],
['c', True],
['d', True],
['e', False],
['f', False]
], ["col1", "col2"]).cache()
dfSource.show()
+----+-----+
|col1| col2|
+----+-----+
| a| true|
| b|false|
| c| true|
| d| true|
| e|false|
| f|false|
+----+-----+
dfSource.write.partitionBy("col2").parquet("/tmp/df")
Вы увидите эти два каталога /tmp/df/col2=true
и /tmp/df/col2=false
Теперь вы можете читать их как обычно
dfTrue = spark.read.parquet("/tmp/df/col2=true")
dfTrue.show()
+----+
|col1|
+----+
| a|
| c|
| d|
+----+
dfFalse = spark.read.parquet("/tmp/df/col2=false")
dfFalse.show()
+----+
|col1|
+----+
| b|
| e|
| f|
+----+