我正在尝试使用mongoDB连接器在Spark中执行Python文件。Python文件进行查询以获取MongoDB的一些数据,并使用Spark中的地图操作处理此数据。
执行的执行将停止获取此错误消息:" socket.timeout:Time of Out",在执行地图操作时。那是我得到的输出:
trackback(最近的最新通话):文件 "/home/ana/computational_tools_for_big_data/project/review_analysis.py", 第27行,在 BAD_REVIEWS =评论S_1.RDD.MAP(lambda r:r.text).collect()文件"/usr/local/spark/python/python/lib/pyspark.zip.zip.zip/pyspark/pyspark/rdd.py" 收集文件 "/usr/local/spark/python/lib/pyspark.zip/pyspark/rdd.py",第142行,in _load_from_socket文件"/usr/local/spark/python/lib/pyspark.zip/pyspark/serializers.py",line 139,在load_stream文件中 "/usr/local/spark/python/lib/pyspark.zip/pyspark/serializers.py",line 156,在_read_with_length文件中 "/usr/local/spark/python/lib/pyspark.zip/pyspark/serializers.py",line 543,在read_int文件"/usr/lib/python2.7/socket.py"中,第384行,in 读 data = self._sock.recv(左)套接字。Timeout:计时
我遇到了这个问题,因为我要查询的文件很大2.3GB,我尝试使用1GB的文件,但它是相同的问题,但它与400MB的较小文件一起使用。
。是否有可能更改超时或使其正常工作的东西?还有其他方法可以更快地处理大量数据吗?
您的问题是套接字连接所花费的时间比指定的超时更多。请参阅此文档以更改超时和其他设置。
您要更改的属性
sockettimeoutms:(整数或无)控制驾驶员在发送后等待多长时间(以毫秒为单位)等待响应在得出结论之前,普通(非监控)数据库操作网络错误发生了。默认为none(没有超时)。
例如。Mongoclient('Local -Host',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