spark心得体会

1. 在spark中,你编写的代码会被spark转义为graph分发给work处理,因此要特别注意你写的代码被翻译之后会变成啥样。并且在翻译为graph时,因为要把任务分发出去,因此其中所有变量都必须是可以序列化的,因此就不能嵌套使用rdd等spark数据结构(如rdd的map方法中引用了外部rdd变量则会导致无法生成graph,程序在启动时就会马上报错),正确的使用方式应该是调用api如:union,join,group等。

2. 所有计算都只会在action那行执行,而且日志中会明确告诉你什么时候执行了代码中哪一行的action,并且日志还会告诉你很多附加信息,因此多仔细看日志有助于编写更合理的spark代码。

3. 一定要记住,执行action的那步就是你要输出结果的那步,因此在编码时要非常确认地分开编写算法和输出结果两部分,不要在编写算法那部分执行action操作。

4. 输出结果时要注意,如果是输出到driver中的变量里,那么需要collect之后再输出,如果是输出到外部系统则可以不collect,由各个work自己去输出更好。

5. 测试中的eventually是会去等待执行结果正确后才往下走,但是其是周期性地去检查,所以要注意它可能读到多个结果中某个正确的结果而导致断言过了,而最终结果却是不正确的。

转载于:https://my.oschina.net/lovelyBoy/blog/1549745

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值