2016-10-25 8 views
1

저는 PySpark (Spark 클러스터에 연결되는 Jupyter Notebook 내부)와 일부 UDF를 사용하고 있습니다. UDF는 추가적인 파라미터로서 목록을 취하고 I이 같은 UDF를 구성 :PySpark에서 UDF 다시로드

my_udf = F.udf(partial(my_normal_fn, list_param=list), StringType())

모든 함수의 실행과 관련하여, 잘 작동한다. 그러나 UDF가 결코 업데이트되지 않는다는 것을 알았습니다. 설명 : list을 업데이트 할 때, 예를 들어 목록의 요소를 변경하여 UDF가 업데이트되지 않습니다. 이전 목록이있는 이전 버전은 계속 사용됩니다. 나는 노트북 전체를 다시 실행하더라도. 새로운 버전의 목록을 사용하려면 Jupyter Kernel을 다시 시작해야합니다. 어느 쪽이 정말로 성가시다 ...

어떤 생각?

답변

0

해결책을 찾았습니다. 그것을 변경

def my_normal_fn(x, list_param=[]): 
    dosomestuffwith_x_and_list_param 

속임수를 썼는지

def my_normal_fn(x, list_param): 
    dosomestuffwith_x_and_list_param 

에 : 내 my_normal_fn

다음과 같은 서명을했다. 자세한 내용은 here을 참조하십시오.

SparkML-Slack 채널의 사용자 Drjones78에게 감사드립니다.