python - 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 应该有一个以上的分区(这是我的理解),以便可以将任务发送到其他节点。对此有任何启示吗?
解决方案
“textFile 方法还接受一个可选的第二个参数来控制文件的分区数量。默认情况下,Spark 为文件的每个块创建一个分区(HDFS 中的块默认为 128MB),但您也可以要求通过传递更大的值来增加分区数。请注意,分区数不能少于块数。”
请尝试例如:
.textFile("./test123.txt", 2)
推荐阅读
- css - 如果禁用,则在悬停路由器按钮时禁用指针事件
- swift - 如何用 TableViewController 覆盖导航栏?
- java - 我的问题是关于通过 java 泛型添加一系列不同的包装类
- windows - 西里尔字符在 Win cmd 中显示为 abracadabra
- powershell - 如何以管理员身份运行启动进程应该等到完成
- gradle - 如何扩展插件提供的任务?
- wordpress - Wordpress - 表单 options.php - 如果没有找到此设置的名称属性,如何不覆盖设置
- sql - 当小数点前的数字为0时如何删除小数位
- mysql - mysql | PK 重复条目 - 非 PK 值更改固定问题 - 为什么?
- java - 我通过捆绑使用数据传输,但由于某种原因,数据仅传输 1 次