2016-11-27 5 views
3

mongoDB 커넥터를 사용하여 SPARK에서 파이썬 파일을 실행하려고합니다. 파이썬 파일은 mongoDB에서 데이터를 얻기 위해 쿼리를 수행하고 SPARK의 맵 작업으로이 데이터를 처리합니다.socket.timeout mongoDB pyspark

맵 작업이 실행되는 동안 실행에 "socket.timeout : timed out"오류 메시지가 표시되지 않습니다.

역 추적 (마지막으로 가장 최근 통화) : "/home/ana/computational_tools_for_big_data/project/review_analysis.py" 라인 (27) 파일, bad_reviews = reviews_1.rdd에서 그게 내가 얻을 출력됩니다. map (lambda : 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/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의 작은 파일로도 작동합니다.

타임 아웃이나 작동하도록 변경하는 것이 가능합니까? 많은 양의 데이터를 더 빠르게 처리 할 수있는 다른 방법이 있습니까?

답변

0

문제는 소켓 연결이 지정된 시간 초과보다 오래 걸리는 것입니다. 시간 제한 및 기타 설정을 변경하려면이 문서를 참조하십시오.

당신이

socketTimeoutMS을 변경하려는 속성 : (정수 또는 없음)은 드라이버가 일반 (비 모니터링) 데이터베이스를 전송 한 후 응답을 대기하는 시간 (밀리 초) 제어 네트워크 오류 이 발생했다는 결론을 내리기 전에 작업을 시작하십시오. 기본값은 없음 (시간 초과 없음)입니다.

예. MongoClient ('localhost를', 27017, socketTimeoutMS = 6000) 실제로 2.3GB 파일 전송에 소요되는 많은 시간을 기준으로 물론

, 당신은 일분 (6000) 이상 이동 할 수 있습니다, 나는 언급 예.PyMongo MongoClient의 MongoClient

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

문서

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