我在pyspark和mongoDB之间建立一个简单的'hello world'连接时遇到了麻烦(参见我试图模仿https://github.com/mongodb/mongo-hadoop/tree/master/spark/src/main/python的例子)。有人可以帮我理解并解决这个问题吗?
详细说明:
我可以使用下面的--jars --conf --py-files
成功运行pyspark shell,然后导入pymongo_spark,最后连接到DB;但是,当我尝试打印'hello world'python因为permission denied '/home/ .cache'
问题而无法提取文件。我不认为我们的环境设置是正确的,我不知道如何解决这个问题......
(参见附件错误文件截图)
我的分析:目前尚不清楚这是Spark / HDFS,pymongo_spark还是pySpark问题。 Spark或PyMongo_spark似乎默认为每个节点/ home .cache
这是我的pyspark环境:
pyspark --jars mongo-hadoop-spark-1.5.2.jar,mongodb-driver-3.6.3.jar,mongo-java-driver-3.6.3.jar --driver-class-path mongo-java -driver-3.6.3.jar,mongo-hadoop-spark-1.5.2.jar,mongodb-driver-3.6.3.jar --master yarn-client -conf“spark.mongodb.input.uri = mongodb: 127.0.0.1/test.coll?readPreference=primaryPreferred","spark.mongodb.output.uri=mongodb://127.0.0.1/test.coll“--py-files pymongo_spark.py
1:import pymongo_spark
2:pymongo_spark.activate()
3:mongo_rdd
=sc.mongoRDD('mongodb://xx.xxx.xxx.xx:27017/test.restaurantssss')
4:print(mongo_rdd.first())
答案 0 :(得分:0)
我们知道'通过将PYTHON_EGG_CACHE环境变量设置为指向可访问的变量,将您的EGG缓存更改为指向不同的目录',但我们不确定如何实现此目的。
我们尝试在本地执行此操作但我们需要更改每个节点的读取和写入权限(作为Hadoop用户 - 而不是本地用户)
设置Hadoop-user PYTHON_EGG_CACHE == tmp
然后在unix提示符中:
导出PYTHONPATH = / usr / anaconda / bin / python
导出MONGO_SPARK_SRC = / home / arustagi / mongodb / mongo-hadoop / spark
export PYTHONPATH = $ PYTHONPATH:$ MONGO_SPARK_SRC / src / main / python
验证PYTHONPATH -bash-4.2 $ echo $ PYTHONPATH 的/ usr /安纳康达/ bin中/蟒:/家庭/ arustagi / mongodb的/蒙戈-的hadoop /火花/ SRC /主/蟒
调用PySpark的命令
pyspark --jars /home/arustagi/mongodb/mongo-hadoop-spark-1.5.2.jar,/home/arustagi/mongodb/mongodb-driver-3.6.3.jar,/home/arustagi/mongodb/ mongo-java-driver-3.6.3.jar --driver-class-path /home/arustagi/mongodb/mongo-hadoop-spark-1.5.2.jar,/home/arustagi/mongodb/mongodb-driver-3.6。 3.jar,/ home / arustagi / mongodb / mongo-java-driver-3.6.3.jar --master yarn-client --py-files /usr/anaconda/lib/python2.7/site-packages/pymongo_spark- 0.1.dev0-py2.7.egg,/家庭/ arustagi / mongodb的/ pymongo_spark.py
在pyspark控制台上
18/04/06 15:21:04 INFO cluster.YarnClientSchedulerBackend:SchedulerBackend准备好在达到minRegisteredResourcesRatio后开始调度:0.8欢迎光临
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/ __ / .__ / _, / / / / _ \ version 1.6.0 / /
使用Python 2.7.13版(默认,2016年12月20日23:09:15)SparkContext可用作sc,HiveContext可用作sqlContext。
在[1]中:导入pymongo_spark
在[2]中:pymongo_spark.activate()
在[3]中:mongo_rdd = sc.mongoRDD('mongodb://xx.xxx.xxx.xx:27017 / test.restaurantssss')
在[4]中:print(mongo_rdd.first())
{u'cuisine':u'Italian',u'_id':ObjectId('5a9cd076219d0d1f1039de7f'),u'name':u'Vella',u'restaurant_id':u'41704620',u'grades' :[{u'date':datetime.datetime(2014,10,1,0,0),u'grade':u'A',u'score':11},{u'date':datetime.datetime (2014,1,16,0,0),u'grade':u'B',u'score':17}],u'address':{u'building':u'1480',u'street ':u'2 Avenue',u'zipcode':u'10075',u'coord':[ - 73.9557413,40.7720266]},u'borough':u'Manhattan'}