새로운 스파크/pyspark 사용자로서 로컬 모드에서 AWS t2.small ec2 인스턴스 (테스트 목적으로 ony)에서 실행되는 스크립트가 있습니다.기본 pyspark 문을 가속화하는 방법
즉. 스파크 = SparkSession 같은 기본 스파크 문의 속도에 관한, 내 질문에 초점을 맞출 수 있도록 내가 코드를 떠난
from __future__ import print_function
from pyspark.ml.classification import NaiveBayesModel
from pyspark.ml.evaluation import MulticlassClassificationEvaluator
from pyspark.sql import SparkSession
import ritc (my library)
if __name__ == "__main__":
spark = SparkSession\
.builder\
.appName("NaiveBayesExample")\
.getOrCreate()
...
request_dataframe = spark.createDataFrame(ritc.request_parameters, ["features"])
model = NaiveBayesModel.load(ritc.model_path)
...
prediction = model.transform(ritc.request_dataframe)
prediction.createOrReplaceTempView("result")
df = spark.sql("SELECT prediction FROM result")
p = map(lambda row: row.asDict(), df.collect())
...
...
날짜 시간 라이브러리 (안 사용 : 예를 들어 위의 3 가지 '범죄자'에 대한 타이밍이 있습니다.
'spark = SparkSession...' -- 3.7 secs
'spark.createDataFrame()' -- 2.6 secs
'NaiveBayesModel.load()' -- 3.4 secs
왜 이렇게 긴 시간입니까?
약간의 배경 지식을 얻기 위해 위 스크립트와 같은 스크립트를 REST 서비스로 노출하는 기능을 제공하고자합니다. 2 위의 REST 요청이 서로 다른 실행 것이고, 예상치 못한 (임의) 번 일반적인 패턴은 다음과 같습니다 :
In supervised context:
- service #1: train a model and save the model in the filesystem
- service #2: load the model from the filesystem and get a prediction for a single instance
(참고. -> 한 번 : 모델 훈련 - 긴 처리 시간 기대를 -> 여러 번 : 단일 인스턴스에 대한 예측 요청 - 밀리 초 단위의 처리 시간 예상 - 예 : < 400ms
내 생각에는 결함이 있습니까?이 목표를 달성하려면 극적으로 성능을 향상시킬 수 있습니까? 두 번째 소요 시간 012
대부분의 예술 ick/video/spark performance에 대한 토론을 통해 나는 '무거운'작업에 중점을 두었다. 위의 '열차 모델'작업은 실제로 '무거운'작업 일 수 있습니다. 프로덕션 환경에서 실행될 때 이것이 예상됩니다. 그러나 '단일 인스턴스에 대한 예측 요청'은 응답해야합니다.
아무도 도와 줄 수 있습니까?
미리 감사드립니다.
콜린 골드버그
빠른 응답을 보내 주셔서 감사합니다. 현재 스트리밍 데이터가 적용되는지 확신 할 수는 없지만 이것이 요인이 될 수 있습니다. 나는 PMML과 MLeap을 재빨리 시작해야 할 것이다. –