【问题标题】:socket.timeout mongoDB pysparksocket.timeout mongoDB pyspark
【发布时间】:2017-04-11 14:35:47
【问题描述】:

我正在尝试使用 mongoDB 连接器在 SPARK 中执行 python 文件。 python 文件执行查询以从 mongoDB 获取一些数据,然后他们使用 SPARK 中的 map 操作处理这些数据。

执行停止收到此错误消息:“socket.timeout:超时”,而正在执行映射操作。这就是我得到的输出:

Traceback(最近一次调用最后一次):文件 "/home/ana/computational_tools_for_big_data/project/review_analysis.py", 第 27 行,在 bad_reviews = reviews_1.rdd.map(lambda r: r.text).collect() 文件“/usr/local/spark/python/lib/pyspark.zip/pyspark/rdd.py”,第 777 行,在 收集文件 “/usr/local/spark/python/lib/pyspark.zip/pyspark/rdd.py”,第 142 行,在 _load_from_socket 文件“/usr/local/spark/python/lib/pyspark.zip/pyspark/serializers.py”,行 139、在load_stream文件中 “/usr/local/spark/python/lib/pyspark.zip/pyspark/serializers.py”,行 156,在 _read_with_length 文件中 “/usr/local/spark/python/lib/pyspark.zip/pyspark/serializers.py”,行 543,在 read_int 文件“/usr/lib/python2.7/socket.py”,第 384 行,在 读 data = self._sock.recv(left) socket.timeout: 超时

我遇到这个问题是因为我正在查询的文件非常大,为 2.3GB,我对 1GB 的文件进行了同样的尝试,但它是同样的问题,但它适用于 400MB 的较小文件。

是否可以更改超时或使其正常工作? 有没有其他方法可以更快地处理大量数据?

【问题讨论】:

    标签: python mongodb timeout pyspark bigdata


    【解决方案1】:

    您的问题是套接字连接花费的时间超过了指定的超时时间。 请参阅此文档以更改超时和其他设置。

    您要更改的属性

    socketTimeoutMS:(整数或无)控制驱动程序在发送一个响应后等待响应的时间(以毫秒为单位) 在得出结论之前的普通(非监控)数据库操作 发生网络错误。默认为无(无超时)。

    例如MongoClient('localhost', 27017, socketTimeoutMS=6000)

    当然,根据 2.3GB 文件传输实际花费的时间,您可能希望超过一分钟 (6000),我在示例中提到过。

    MongoClient 的文档

    https://mongodb.github.io/node-mongodb-native/driver-articles/mongoclient.html

    PyMongo MongoClient 的文档

    http://api.mongodb.com/python/current/api/pymongo/mongo_client.html

    【讨论】:

    • 这是 pymongo 客户端。 @Ana 正在寻找 pyspark mongodb 连接器配置设置。
    猜你喜欢
    • 2021-05-10
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 2021-12-22
    • 2017-10-27
    • 2015-04-19
    相关资源
    最近更新 更多