2017-02-17 5 views
0

происхождения данныхпадение дубликатами для каждого раздела

cls, id 
---- 
a, 1 
a, 1 
---- 
b, 3 
b, 3 
b, 4 

ожидается выход

cls, id 
---- 
a, 1 
---- 
b, 3 
b, 4 

идентификатор может быть дубликатами только в тех же ЦБС, это означает, что тот же идентификатор не существует по clses.

В этом случае.

df.dropDuplicates($id) 

будет перемещаться по всем разделам, чтобы проверить дубликаты по cls. и перераспределяется до 200 (значение по умолчанию)

Теперь, как я могу запускать dropDuplicates для каждого раздела отдельно, чтобы сократить вычислительную стоимость?

что-то вроде

+0

вы можете положить освобожденную выход для данного входа в вопросе –

+0

Пожалуйста, смотрите, что я добавил к этому вопросу. ожидаемые данные обновлены. –

+0

, если у вас есть только эти 2 значения, тогда вы можете попробовать 'distinct()' method –

ответ

0

Вы, вероятно, после того, как что-то вроде этого:

val distinct = df.mapPartitions(it => { 
    val set = Set(); 
    while (it.hasNext) { 
     set += it.next() 
    } 
    return set.iterator 
}); 
Смежные вопросы