Набор данных Spark, когда следует использовать Исключение против левого анти-объединения - PullRequest
0 голосов
/ 19 сентября 2018

Мне было интересно, есть ли разница в производительности между вызовами, за исключением (https://spark.apache.org/docs/2.1.0/api/java/org/apache/spark/sql/Dataset.html#except(org.apache.spark.sql.Dataset) и использованием левого анти-объединения. До сих пор единственное отличие, которое я вижу, состоит в том, что с левым анти-объединением 2 набора данныхможет иметь разные столбцы.

1 Ответ

0 голосов
/ 20 сентября 2018

Ваш заголовок отличается от объяснения.

Но, если у вас одинаковая структура, вы можете использовать оба метода для поиска недостающих данных.

EXCEPT

- это конкретная реализация, которая применяет ту же структуру и является операцией вычитания, тогда как

LEFT ANTI JOIN

допускает различные структуры, как вы сказали бы, но может давать один и тот же результат.

Варианты использования различаются: 1) Левое анти-объединение может применяться во многих ситуациях, связанных с отсутствующими данными - клиенты без заказов (пока), сироты в базе данных.2) За исключением случаев вычитания вещей, например, машинного обучения, разбивая данные на тестовые и тренировочные наборы.

Производительность не должна быть реальной преградой, поскольку в целом это разные варианты использования, и поэтому их трудно сравнивать.За исключением того, что будет задействован один и тот же источник данных, тогда как LAJ будет включать разные источники данных.

...