Я делаю некоторую работу с 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()
И будет работать без ошибок.
Заранее благодарен!
Вы можете написать функцию карты, которая очистит дубликаты. Эта функция принимает одну запись как входную и выводит запись без дубликатов. Назовем это 'f'. Вы запустите 'rdd.map (f())'. Результатом этого должен быть «очищенный» RDD. – LiMuBei
Спасибо @LiMuBei, любой совет о том, как эта функция будет выглядеть? – user86569