2016-09-06 4 views
0

Я делаю некоторую работу с Pyspark MLlib FPGrowth algorithm и имею rdd с повторными примерами повторяющихся транзакций, содержащихся в каждой строке. Это приводит к тому, что функция обучения модели выдает ошибку из-за этих дубликатов. Я довольно новичок в Spark, и мне интересно, как удалить дубликаты в пределах линии rdd. В качестве примера:Удалить дубликаты по строке в Spark RDD

#simple example 
    from pyspark.mllib.fpm import FPGrowth 

    data = [["a", "a", "b", "c"], ["a", "b", "d", "e"], ["a", "a", "c", "e"], ["a", "c", "f"]] 
    rdd = sc.parallelize(data) 
    model = FPGrowth.train(rdd, 0.6, 2) 
    freqit = model.freqItemsets() 
    freqit.collect() 

Так что это выглядит следующим образом:

#simple example 
from pyspark.mllib.fpm import FPGrowth 

data_dedup = [["a", "b", "c"], ["a", "b", "d", "e"], ["a", "c", "e"], ["a", "c", "f"]] 
rdd = sc.parallelize(data_dedup) 
model = FPGrowth.train(rdd, 0.6, 2) 
freqit = model.freqItemsets() 
freqit.collect() 

И будет работать без ошибок.

Заранее благодарен!

+0

Вы можете написать функцию карты, которая очистит дубликаты. Эта функция принимает одну запись как входную и выводит запись без дубликатов. Назовем это 'f'. Вы запустите 'rdd.map (f())'. Результатом этого должен быть «очищенный» RDD. – LiMuBei

+0

Спасибо @LiMuBei, любой совет о том, как эта функция будет выглядеть? – user86569

ответ

1

Использование так:

rdd = rdd.map(lambda x: list(set(x))) 

Это удалит дублируется.

+0

Вот и все, я ценю помощь – user86569

Смежные вопросы