Whole State Code Generation
에 대한 기사를 읽은 후 spark는 바이트 코드 최적화를 수행하여 쿼리 계획을 최적화 된 실행 계획으로 변환합니다.스파크는 어떻게 바이트 코드를 기계어 코드 명령어 런타임 변환으로 변환합니까?
https://jaceklaskowski.gitbooks.io/mastering-apache-spark/spark-sql-whole-stage-codegen.html
이제 나의 다음 질문은 여전히 바이트 코드 및 모든 관련이 최적화를 수행 한 후, 아직이 작업을 수행하기 때문에 기계 코드 명령어에 그 바이트 코드 지침의 변환이 가능한 병목이 될 수 있다고 그럴듯 수 있습니다 JIT만으로는 프로세스의 런타임 중에 JIT가 충분한 실행을 가져야합니다.
spark는 최적화 된 바이트 코드 (결과는 whole stage code gen
임)를 기계 코드로 동적/런타임 변환하거나 JIT를 사용하여 해당 바이트 코드 명령어를 기계어 명령어로 변환하는 데 관련이 있습니다. JIT에 의존하는 경우 특정 불확실성이 포함되기 때문입니다.
한 가지 더, 나는 다소 관심 스파크가이 최적화를 수행하지 않는다면이 바이트 코드 최적화를 수행하지 않는 일반 쿼리 엔진과 비교할 때 속도가 느려질 수 있습니다. 왜냐하면 우리는 각 쿼리 유형에 대해 서로 다른 최적화 된 바이트 코드를 생성하기 때문에 SPARK에서는 결코 맞지 않을 수도있는 JIT 최적화 (핫 경로에서)를 반복적으로 사용하는 동일한 코드 세그먼트를 사용하기 때문입니다. –
필자는 링크 된 기사의 저자이기 때문에 _ "전체 주 코드 생성에 대한 기사를 읽은 후 _"에 관심이 있습니다. 나는이 지역을 더 잘 탐구하기 위해 그것들을 읽고 싶다. –
아무런 문제가 없지만 스파크가 기계어 명령 생성을하지 않으면 JIT가 실제로 실행되지 않을 수도 있으므로 어떤 경우에는 느려질 수 있습니다. 말이 돼 ? –