partition

机器学习一般算法的输入是训练集和测试集,通常来说是(label, key : value)这样的序对。对于这种输入,直接使用SparkContext提供的textFile()接口就好了,MLlib内部会转换成LabeledPoint类。

分布式数据并行环境下,保持数据的本地性是非常重要的内容,事关分布式系统性能高下。要想更好的了解Spark是怎么运作的,输入也许是很重要的一个环 节。举一个小例子,你或许有心情在一台不错的机器上使用Spark处理100GB的数据。按理说这不应算作多大的应用场景,但如果不仔细调整一下你的输入 的话,你会发现Spark甚至会在这台机器上切分上千个partition来并行处理这份数据。而这上千个partition随便来一个shuffle造 成的百万量级的shuffle数据交换会把Spark性能拖死。实际上,调用Hadoop的API访问本地磁盘的默认块大小为32MB,据其分块策略,当 然会产生上千个partition。另外,如果你本地是一堆小文件,如LDA的语料库,你会发现Spark甚至会为每个文件分配一个或多个 partition!所以,这下你应该知道为什么有时简单的Spark程序也会非常慢了吧。

转载于:https://www.cnblogs.com/ylx1214/p/4554832.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值