Почему каждый ряд должен быть уникальным? - PullRequest
0 голосов
/ 26 июня 2018

Я читаю исходный код spark.sql.execution.datasources.jdbc.JDBCRelation.

Вот комментарий к исходному коду.

Учитывая схему разделения (столбец целого типа,число разделов, а также верхнюю и нижнюю границы значения столбца), сгенерируйте предложения WHERE для каждого раздела, чтобы каждая строка в таблице появлялась ровно один раз.

Мой вопрос:

  1. Почему каждый ряд должен быть уникальным?
  2. Есть примеры?Какая мотивация?
  3. Что если у нас есть дубликаты?

1 Ответ

0 голосов
/ 26 июня 2018

Комментарий вне контекста, вы должны указать, где в коде комментарий, но я предполагаю, что JDBC-коннектор для spark должен разбить реляционную таблицу на несколько разделов, чтобы создать RDD, которыйраспределены, и поэтому должны быть разделены.Чтобы разбить таблицу на несколько частей, необходимо создать несколько фрагментов данных с несколькими предложениями WHERE, но каждая запись может идти только на один раздел, чтобы не создавать дубликаты.

Например, если у вас есть таблица

table tbl
---------
letter | number
a      |1 
b      |2 
a      |3
c      |4 

вы можете разделить, используя WHERE number <3 и WHERE number >=3, разделив его на 2 части, но если вы используете WHERE number <=3 и WHERE number >=3, вы получите одну запись, используемую в двух разделах.Таким образом, вам не нужно иметь уникальные строки в исходной таблице, комментарий относится к тому, как спарк разделяет отношение, при этом он должен быть уверен, что каждая запись попадает только в один раздел.

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