sparkRDD和大文件比较

时间:2016-06-01 06:11:45

标签: python json apache-spark pyspark

场景:我有85789142个JSON文档和一个包含32227957个项目的文本文件。

文本文件如下所示:

url1
url2
url3

示例JSON文档:

{"key1":"value1","key2":"value2","url":"some_url"}

我想找到与文本文件中的项目对应的JSON文档。

我做了什么:

import json
textfile_rdd = sc.textFile("path/to/textfile.txt")
urls = set(textfile_rdd.collect())
json_files_rdd = sc.textFile("path/to/the/directory/of/json/files")
json_rdd = json_files_rdd.filter(lambda x: (json.loads(x)).get("url") in urls ) 

此代码适用于小尺寸的文本文件(我尝试过500000个文档)。

目前我正在将我的32227957文本文件拆分成更小的文件,有没有更好的方法?

1 个答案:

答案 0 :(得分:0)

我建议你使用sparkSQL解析你的json文件,并将文本文件加载为一列的DataFrame。然后你可以简单地加入这两个数据集,而不需要将第一个文件收集到驱动程序,这就是你现在的可扩展性问题......