获取pyspark中两个大型发行版之间差异的最快方法

时间:2019-03-26 16:32:57

标签: apache-spark pyspark apache-spark-sql

Wikidata几乎每天都会发布新的转储文件(非常大的文件),从一个版本到另一个版本的更改很少。面临的挑战是仅处理当前版本中的新行。
 例如,比较今天和昨天发布的内容。

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

目标是仅处理今天的新行(IJKLMNOP)。

我可以想到两种方法

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 subtractreading one even bigger file followed by a map-reduce/filter operation

解决这个问题的速度更快还是有更好的方法?

0 个答案:

没有答案