首页 > 解决方案 > RDD 分区问题

问题描述

使用以下代码读取 csv 文件

rdd= (sc.sparkContext
       .textFile("./test123.txt")
       .flatMap(lambda line: line.split("\n\r"))
       .map(lambda x: x.split("|"))
      )

在运行上面的代码时,spark 只创建了一个分区(在我的本地机器上),想了解为什么会这样?下图 1

rdd.getNumPartitions()

我想并行化这个操作,以便可以在集群上运行。对于要分发的工作,rdd 应该有一个以上的分区(这是我的理解),以便可以将任务发送到其他节点。对此有任何启示吗?

标签: pythonpython-3.xpysparkapache-spark-sql

解决方案


“textFile 方法还接受一个可选的第二个参数来控制文件的分区数量。默认情况下,Spark 为文件的每个块创建一个分区(HDFS 中的块默认为 128MB),但您也可以要求通过传递更大的值来增加分区数。请注意,分区数不能少于块数。”

请尝试例如:

.textFile("./test123.txt", 2)


推荐阅读