我想知道在使用 Spark 时是否有办法将最终结果合并到一个文件中?这是我的代码:
conf = SparkConf().setAppName("logs").setMaster("local[*]")
sc = SparkContext(conf = conf)
logs_1 = sc.textFile('logs/logs_1.tsv')
logs_2 = sc.textFile('logs/logs_2.tsv')
url_1 = logs_1.map(lambda line: line.split("\t")[2])
url_2 = logs_2.map(lambda line: line.split("\t")[2])
all_urls = uls_1.intersection(urls_2)
all_urls = all_urls.filter(lambda url: url != "localhost")
all_urls.collect()
all_urls.saveAsTextFile('logs.csv')
collect() 方法似乎不起作用(或者我误解了它的目的)。本质上,我需要将“saveAsTextFile”输出到单个文件,而不是包含零件的文件夹。
请在下面找到一些建议:
collect()
和saveAsTextFile()
是意味着他们将在驱动程序节点上收集结果的操作。因此,同时调用它们是多余的。
在您的情况下,您只需要存储数据而saveAsTextFile()
无需调用collect()
.
collect()
返回一组项目(在您的情况下,您没有使用返回的变量)
正如 Glennie 和 Akash 建议的那样,只使用coalesce(1)
强制单个分区。coalesce(1)
不会导致改组,因此效率更高。
在给定的代码中,您使用的是 Spark 的 RDD API,我建议改用数据帧/数据集。
有关 RDD 和数据帧的更多详细信息,请参阅下一个链接:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句