架構(gòu)
SparkR主要由兩部分組成:SparkR包和JVM后端。SparkR包是一個R擴展包,安裝到R中之后,在R的運行時環(huán)境里提供了RDD和DataFrame API。
圖1 SparkR軟件棧
SparkR的整體架構(gòu)如圖2所示。
圖2 SparkR架構(gòu)
R JVM后端
SparkR API運行在R解釋器中,而Spark Core運行在JVM中,因此必須有一種機制能讓SparkR API調(diào)用Spark Core的服務(wù)。R JVM后端是Spark Core中的一個組件,提供了R解釋器和JVM虛擬機之間的橋接功能,能夠讓R代碼創(chuàng)建Java類的實例、調(diào)用Java對象的實例方法或者Java類的靜態(tài)方法。JVM后端基于Netty實現(xiàn),和R解釋器之間用TCP socket連接,用自定義的簡單高效的二進制協(xié)議通信。