python - 将 RDD 写入 PySpark 中的多个文件

标签 python apache-spark pyspark

我有一个包含键值对的 rdd。只有 3 个键,我想将给定键的所有元素写入文本文件。目前我分 3 次完成此操作,但我想看看我是否可以一次完成。

这是我目前所拥有的:

# I have an rdd (called my_rdd) such that a record is a key value pair, e.g.: 
# ('data_set_1','value1,value2,value3,...,value100')

my_rdd.cache()
my_keys = ['data_set_1','data_set_2','data_set_3']
for key in my_keys:
    my_rdd.filter(lambda l: l[0] == key).map(lambda l: l[1]).saveAsTextFile(my_path+'/'+key)

这是有效的,但是缓存它并迭代三次可能是一个漫长的过程。请问有什么方法可以同时写入这三个文件吗?

最佳答案

使用自定义分区器的替代方法(与 Def_Os 提供的方法相比,它在写入输出文件之前对数据集进行分区)

例如:
RDD[(K, W)].partitionBy(partitioner: Partitioner)

class CustmozedPartitioner extends Partitioner {

  override def numPartitions: Int = 4

  override def getPartition(key: Any): Int = {
    key match {
      case "data_set_1" => 0
      case "data_set_2" => 1
      case "data_set_3" => 2
      case _ => 3
    } 
  }
}

关于python - 将 RDD 写入 PySpark 中的多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34865405/

相关文章:

python - tkinter askopenfilename doubleclick 将事件传递给父级

Python获取硬盘信息

python - SQLAlchemy 返回带有限制/偏移量的意外结果

linux - 超过命名空间配额时如何清空hadoop上的垃圾?

apache-spark - PySpark SparkSession Builder 与 Kubernetes Master

apache-spark - kmean如何计算不同分区的数据?

apache-spark - PySpark 值错误

python - PySpark:如何在 PySpark SQL 中创建计算列?

python - 如何在 Pyspark 的相同条件下更新具有不同值的两列?

python - 使用python修改字符串的问题