2016-07-20 3 views
3

내가 (this 유사) PySpark 두 dataframes (DF1 및 DF2)에 대한 가입을 사용자 지정을 만들려고 해요를 사용하여 가입 내가 갖는 것입니다 :Pyspark Dataframe은 다음과 같다 코드, UDF

java.lang.RuntimeException: Invalid PythonUDF PythonUDF#<lambda>(col_a#17,col_b#0), requires attributes from more than one child 

두 개의 별도의 dataframes에서 열을 처리 할 수있는 PySpark UDF를 작성하는 방법이 있나요?

답변

5

스파크 2.2 당신은 crossJoin을 사용하거나 크로스가 in the configuration 조인 활성화해야

:에 더 이상 작동하지 않습니다 아래

df1.crossJoin(df2).where(my_join_udf(df1.col_a, df2.col_b)) 

스파크 2.0, 2.1

방법 스파크 2.x. SPARK-19728을 참조하십시오.

스파크

은 이론적으로 가입 할 수 1.x 및 필터 :

df1.join(df2).where(my_join_udf(df1.col_a, df2.col_b)) 

그러나 일반적으로 당신이해야하지 모든합니다. 평등을 기반으로하지 않는 join의 유형은 거의 받아 들일 수없는 완전한 데카르트 제품 (답변과 동일)이 필요합니다 (Why using a UDF in a SQL query leads to cartesian product? 참조).

관련 문제