python's GIL에 따르면 우리는 CPU 바인딩 프로세스에서 스레딩을 사용할 수 없기 때문에 Apache Spark는 어떻게 멀티 코어 환경에서 파이썬을 활용합니까?Apache는 어떻게 파이썬 다중 스레드 문제를 처리합니까?
2
A
답변
4
멀티 스레드 파이썬 문제는 Apache Spark 내부와 구분됩니다. Spark의 병렬 처리는 JVM 내부에서 처리됩니다.
그리고 그 이유는 파이썬 드라이버 프로그램에서 SparkContext
는 JVM을 시작하고 JavaSparkContext을 만들 Py4J를 사용한다는 것입니다.
Py4J는 Python과 Java SparkContext 객체 간의 로컬 통신을 위해 드라이버에서만 사용됩니다. 대규모 데이터 전송은 다른 메커니즘을 통해 수행됩니다.
Python의 RDD 변환은 Java의 PythonRDD 객체의 변환에 매핑됩니다. 원격 작업자 컴퓨터에서 PythonRDD 객체는 Python 하위 프로세스를 시작하고 파이프를 사용하여 통신하며 사용자의 코드와 처리 할 데이터를 보냅니다.
추신 : 실제로이 질문에 완전히 답변 할 지 모르겠습니다.
관련 문제
- 1. 연결 문제를 어떻게 처리합니까?
- 2. 이 정규식 문제를 어떻게 처리합니까?
- 3. 다중 스레드 문제를 방지하기위한 지침
- 4. 파이썬 다중 스레드 메모 작성
- 5. 파이썬 단위 테스트 다중 스레드
- 6. 파이썬 다중 스레드 매트릭스 곱셈
- 7. 파이썬 다중 스레드 확장 - 스레드 잠금 복구
- 8. 파이썬 다중 스레드. 프로세스 잠금
- 9. 다중 스레드 파일 읽기 파이썬
- 10. C#은 스레드 전환을 어떻게 처리합니까?
- 11. OPENROWSET을 사용하여 캐스팅 문제를 어떻게 처리합니까?
- 12. 어떻게 부동 소수점 반올림 문제를 처리합니까?
- 13. Wordpress Robots.txt가 문제를 처리합니까?
- 14. 다중 스레드 및 메모리
- 15. MediaCodec 다중 스레드 참조
- 16. Java에서 다중 유형 트리 시스템을 어떻게 처리합니까?
- 17. 다중 스레드 서버는 어떻게 작동합니까?
- 18. 파이썬 다중 스레드 및 데이터베이스 요청?
- 19. 어떻게 파이썬 3.2 루프에서 함수 호출을 처리합니까?
- 20. 파이썬 matplotlib은 바이너리 데이터를 어떻게 처리합니까?
- 21. OS는 메모리보다 큰 파이썬 사전을 어떻게 처리합니까?
- 22. 파이썬 C 확장 : 다중 스레드 및 난수
- 23. 파이썬 : 다중 클라이언트 스레드 채팅 서버
- 24. 실행 파일을 실행하기위한 파이썬 다중 스레드 프로세스
- 25. 파이썬 멀티 스레딩, 다중 코어를 어떻게 사용합니까?
- 26. 임베디드 파이썬에있는 파이썬 스레드 : 어떻게?
- 27. 대리인이 크로스 스레드 문제를 어떻게 해결합니까?
- 28. 직렬 포트 읽기를위한 파이썬 다중 스레드/다중 프로세스
- 29. 동시 파일 복사 작업을위한 파이썬 다중 프로세스/다중 스레드 사용
- 30. 다중 처리 및 다중 스레드 파이썬 프로그램에 로그인 하시겠습니까?
여기서 핵심은 PySpark가 멀티 스레딩을 사용하지 않기 때문에 GIL이 단순히 문제가되지 않는다는 것입니다. – zero323
@ zero323 당신의 의견을 정교하게 할 수 있습니까? –
정교 할 것이 많지 않습니다. 테스트를 제외하고 PySpark가 스레드를 사용하여 외부 프로세스 시작과 같은 몇 가지 2 차 태스크를 수행하는 곳이 몇 군데 있습니다. 다른 모든 것은 그냥 좋은 오래된 단일 스레드 처리. – zero323