У меня есть два таких фрейма данных, один из "класса A" и один из класса B "(я экспериментирую с различными размерами, 10000, 100000 и c):
+-------+---+---+-----+
| name| x| y|class|
+-------+---+---+-----+
| tom| 86| 56| A|
| george| 94| 84| A|
| jason| 62| 73| A|
| cosmo| 52| 67| A|
| bill| 15| 89| A|
| john| 35| 21| A|
| brad| 73| 37| A|
| jerry| 73| 30| A|
|nicolas| 7| 34| A|
|william| 9| 3| A|
+-------+---+---+-----+
Я перекрестное соединение они используют евклидово расстояние на заданном расстоянии.
dfA.createOrReplaceTempView("table1")
dfB.createOrReplaceTempView("table2")
df = spark.sql("select table1.name, table2.name from table1 cross join table2 where sqrt( power((table1.lat - table2.lat),2) + power((table1.lon - table2.lon),2) ) < 0.1")
df.show()
Я замечаю, что, поскольку я даю большее расстояние для условия (выше 0,1), что также означает, что больше пар соединяются, show () быстрее . Поскольку заданное расстояние меньше, а количество пар меньше, функция show () работает медленнее. Кто-то может объяснить, почему это происходит? Я что-то не так делаю?