首页 文章

socket.timeout mongoDB pyspark

提问于
浏览
3

我试图使用mongoDB连接器在SPARK中执行python文件 . python文件执行查询以从mongoDB获取一些数据,并使用SPARK中的映射操作处理此数据 .

执行停止获取此错误消息:“socket.timeout:timed out”,而正在执行映射操作 . 这是我得到的输出:

回溯(最近一次调用最后一次):文件“/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行,读取数据= self._sock.recv(左)socket.timeout:超时

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

是否可以更改超时或某些东西以使其工作?还有其他方法可以更快地处理大量数据吗?

1 回答

  • 0

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

    您要更改的属性

    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

相关问题