union find with partition clustering

This commit is contained in:
nitowa
2022-09-01 00:58:22 -04:00
parent 9c1ac98ebf
commit 0069a95487
+4 -10
View File
@@ -64,14 +64,8 @@ def cluster_step(clusters: "List[List[str]]", addresses: "List[List[str]]"):
return cluster_step(clusters,addresses) return cluster_step(clusters,addresses)
def cluster_partition(iter: "Iterable[Row]") -> Iterable:
def cluster_id_addresses_rows(iter: "Iterable[Row]") -> Iterable: yield cluster_step([], list(map(lambda row: row['addresses'], iter)))
address_lists = list(map(lambda row: row['addresses'], iter))
yield cluster_step([], address_lists)
def dud(iter):
address_lists = list(map(lambda row: row['addresses'], iter))
yield address_lists
master = Master(config) master = Master(config)
master.spark.catalog.clearCache() master.spark.catalog.clearCache()
@@ -84,14 +78,14 @@ tx_grouped = tx_df \
.agg(F.collect_set('address').alias('addresses')) \ .agg(F.collect_set('address').alias('addresses')) \
.orderBy('tx_id') \ .orderBy('tx_id') \
print()
res = tx_grouped \ res = tx_grouped \
.repartition(5) \ .repartition(5) \
.rdd \ .rdd \
.mapPartitions(cluster_id_addresses_rows) \ .mapPartitions(cluster_partition) \
.fold([], cluster_step) .fold([], cluster_step)
for cluster in res: for cluster in res:
print()
print(sorted(cluster)) print(sorted(cluster))
end = time.time() end = time.time()