Union не удаляет повторяющиеся строки в кадре данных spark - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть два фрейма данных, как показано ниже

+--------------------+--------+-----------+-------------+
|UniqueFundamentalSet|Taxonomy|FFAction|!||DataPartition|
+--------------------+--------+-----------+-------------+
|192730241374        |1       |I|!|       |Japan        |
|192730241374        |2       |I|!|       |Japan        |
|192730241373        |1       |I|!|       |Japan        |
|192730241373        |2       |I|!|       |Japan        |
+--------------------+--------+-----------+-------------+

+--------------------+--------+-----------+-------------+
|UniqueFundamentalSet|Taxonomy|FFAction|!||DataPartition|
+--------------------+--------+-----------+-------------+
|192730241374        |1       |I|!|       |Japan        |
|192730241374        |2       |I|!|       |Japan        |
|192730391384        |1       |I|!|       |Japan        |
|192730391384        |2       |I|!|       |Japan        |
|192730241373        |1       |I|!|       |Japan        |
|192730241373        |2       |I|!|       |Japan        |
+--------------------+--------+-----------+-------------+

Когда я выполняю объединение между вышеупомянутым фреймом данных, я получаю дублирующиеся строки.Вот мой вывод

+--------------------+--------+-----------+-------------+
|UniqueFundamentalSet|Taxonomy|FFAction|!||DataPartition|
+--------------------+--------+-----------+-------------+
|192730241374        |1       |I|!|       |Japan        |
|192730241374        |2       |I|!|       |Japan        |
|192730241373        |1       |I|!|       |Japan        |
|192730241373        |2       |I|!|       |Japan        |
|192730241374        |1       |I|!|       |Japan        |
|192730241374        |2       |I|!|       |Japan        |
|192730391384        |1       |I|!|       |Japan        |
|192730391384        |2       |I|!|       |Japan        |
|192730241373        |1       |I|!|       |Japan        |
|192730241373        |2       |I|!|       |Japan        |
+--------------------+--------+-----------+-------------+

val dfToSave = dfMainOutput.union(insertdf)

У меня сложилось впечатление, что union удаляет повторяющиеся строки, а unionall сохраняет его.Я должен использовать отчетливый после объединения.Может кто-нибудь, пожалуйста, объясните это.

1 Ответ

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

Ваше впечатление было неправильным.Как указано в официальной документации :

Возвращает новый набор данных, содержащий объединение строк в этом наборе данных и другой набор данных>.

Это эквивалентно UNION ALLв SQL.Чтобы выполнить объединение наборов в стиле SQL (которое выполняет дедупликацию элементов), используйте эту функцию, за которой следует distinct.

Также как стандарт в SQL, эта функция разрешает столбцы по позиции (не по имени):

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