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