我已经达到某种程度,我得到了groupByKey
操作的结果。现在,我想使用(key, value)
作为名称并将k
作为其内容,将每个v
对写入不同的文件。
首先,我尝试在驱动程序中收集这些结果以便使用open()
并写入本地文件,但由于缓冲区溢出而失败,因为结果的大小非常大。
然后我尝试过滤那些(key, value)
对来制作新的RDD,以便为每个新的RDD使用saveAsTextFile
,但它似乎对网络通信来说太慢了。
现在我想如果我可以在foreach
RDD上使用groupByKey
操作并在每次迭代中直接写入HDFS文件,那么它应该更快,但我不知道要引用哪个函数在python API中。谁能告诉我一些例子或者告诉我另一种方法来实现我在pyspark的目标?
在SO上有一个类似的问题here,但是这个解决方案是在scala中,而我想在python中解决它,因为我发现没有办法直接与pyspark中的HDFS通信。