Самый быстрый способ получить разницу между двумя большими релизами в pyspark - PullRequest
0 голосов
/ 26 марта 2019

Wikidata выпускает новый дамп (очень большой файл) почти ежедневно с очень небольшим количеством изменений от одного выпуска к другому.Задача состоит в том, чтобы обрабатывать только новые строки из текущего выпуска.
Например, сравнивая содержимое сегодняшнего выпуска со вчерашним выпуском.

    release_today    release_yesterday     
-----------------      ----------------
    ABCD                 ABCD
    EFGH                 EFGH
    IJKL
    MNOP 

Цель состоит в том, чтобы обрабатывать только новые строки с сегодняшнего дня,(IJKL, MNOP).

Я мог бы подумать о двух методах

1- Прочитать два файла и использовать вычитание

rdd = spark_context.textFile(release_today).subtract(spark_context.textFile(release_yesterday))

2 - объединить оба файла в один и отфильтровать дубликаты

cat today_release > all_release 
cat yesterday_release >> all_release 
spark_context.textFile('all_release').map(lambda line: (line,1)).reduceByKey(lambda a, b: a + b).filter(lambda x: x[1]<2)

Я не знаю, какой метод лучше, reading two very large files and subtract или reading one even bigger file followed by a map-reduce/filter operation.

Какой из них быстрее или есть лучший способ решить эту проблему?

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