spark 初学

rdd有两种操作:transform, actions, transform是lazy设计,只有当有action作用在上面的时候,才会被计算,好处是降低资源消耗,坏处是每次action的时候,transform都要重新计算,解决的办法是讲transformed rdd做一个persist or cache操作,这样后续做action的时候,不会重新transform

 

闭包:不要涉及对本地变量的更新,在集群模式,结果是不确定的,如果需要修改共享变量,使用accumulator。

accumulator只能在driver program当中读取,在executor当中不能读取,只能更新。另外accumulator最好只在actions当中使用,保证在action当中只执行一次,在transform当中可能会执行多次。

 

连接mongodb

https://github.com/mongodb/mongo-hadoop

 下载

mongo-java-driver-2.14.2.jar

mongo-hadoop-spark-1.5.2.jar

安装pymongo-spark package

run:

spark-submit --jars /Users/huangfrieda/spark-1.6.1-bin-hadoop2.6/lib/mongo-hadoop-spark-1.5.2.jar  --driver-class-path /Users/huangfrieda/spark-1.6.1-bin-hadoop2.6/lib/mongo-java-driver-2.14.2.jar test_mongo.py 

 

 

posted @ 2016-07-20 13:20  怎么也得过啊  阅读(147)  评论(0编辑  收藏  举报