【问题标题】:MongoDB pyspark connector issue, [Error 13] permission denied 'home/ .cache'MongoDB spark 连接器问题,[错误 13] 权限被拒绝 'home/.cache'
【发布时间】:2018-09-15 19:54:27
【问题描述】:

我在 pyspark 和 mongoDB 之间建立简单的“hello world”连接时遇到了麻烦(请参阅我试图模拟 https://github.com/mongodb/mongo-hadoop/tree/master/spark/src/main/python 的示例)。有人可以帮我理解并解决这个问题吗?

详情:

我可以用下面看到的--jars --conf --py-files成功运行pyspark shell,然后导入pymongo_spark,最后连接到数据库;但是,当我尝试打印“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())

Error message --3

Error message --1

Error message --2

【问题讨论】:

  • 你能添加堆栈跟踪的底部吗?似乎没有设置该路径的配置,也许查看类源会给出提示......
  • 嗨欧内斯特,现在发布它
  • 再次感谢欧内斯特 - 我发布了堆栈跟踪的其余部分(错误消息..)这有帮助吗?该消息重复了很多次 - 我只是抓住了前两个重复项......请让我知道你的想法或者如果你需要更多信息......
  • 我在堆栈跟踪中看到一条清晰的消息:通过将 PYTHON_EGG_CACHE 环境变量设置为指向可访问变量,将您的 EGG 缓存更改为指向不同的目录。你能在你的集群节点上试试这个吗?

标签: mongodb apache-spark hadoop pyspark


【解决方案1】:

我们知道“通过将 PYTHON_EGG_CACHE 环境变量设置为指向可访问的变量来更改您的 EGG 缓存以指向不同的目录”,但我们不确定如何实现这一点。

我们试图在本地执行此操作,但我们需要更改每个节点的读写权限(作为 Hadoop 用户 - 而不是本地用户)

设置 Hadoop 用户 PYTHON_EGG_CACHE == tmp

然后在unix提示符下:

导出 PYTHONPATH=/usr/anaconda/bin/python

导出 MONGO_SPARK_SRC=/home/arrustagi/mongodb/mongo-hadoop/spark

导出 PYTHONPATH=$PYTHONPATH:$MONGO_SPARK_SRC/src/main/python

验证 PYTHONPATH -bash-4.2$ echo $PYTHONPATH /usr/anaconda/bin/python:/home/arrustagi/mongodb/mongo-hadoop/spark/src/main/python

调用 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/arrustagi/mongodb/mongo-hadoop-spark-1.5.2.jar,/home/arrustagi/mongodb/mongodb-driver-3.6。 3.jar,/home/arrustagi/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,/home/arrustagi/mongodb/pymongo_spark.py

在 pyspark 控制台上

18/04/06 15:21:04 INFO cluster.YarnClientSchedulerBackend:SchedulerBackend 已准备好在达到 minRegisteredResourcesRatio:0.8 后开始调度

  ____              __
 / __/__  ___ _____/ /__
_\ \/ _ \/ _ `/ __/  '_/

/__ / .__/_,// //_\ 版本 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]: 打印(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'}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-19
    • 2017-04-04
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 2022-01-23
    相关资源
    最近更新 更多