Spark - Пространственное перекрестное соединение происходит быстрее, так как условное расстояние становится больше - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть два таких фрейма данных, один из "класса 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 () работает медленнее. Кто-то может объяснить, почему это происходит? Я что-то не так делаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...