2016-07-20 5 views
2

하이브에서 getLastProcessedVal2 UDF를 사용하여 테이블에서 최신 파티션을 가져옵니다. 이 UDF는 java로 작성됩니다. 하이브 컨텍스트를 사용하여 pyspark에서 동일한 UDF를 사용하고 싶습니다.Hive 컨텍스트에서 Pyspark를 사용하여 Java로 작성된 하이브 UDF 호출하는 방법

dfsql_sel_nxt_batch_id_ini=sqlContext.sql(''' select l4_xxxx_seee.**getLastProcessedVal2**("/data/l4/work/hive/l4__stge/proctl_stg","APP_AMLMKTE_L1","L1_AMLMKT_MDWE","TRE_EXTION","2.1")''') 

오류 :

ERROR exec.FunctionRegistry: Unable to load UDF class: java.lang.ClassNotFoundException:

답변

-1

당신은 SQLContext 방법 udf을 사용하여 해당 사용자 정의 함수를 등록, 거기에 당신이 첫 번째 매개 변수로 문자열을 통과해야 볼 수 그것의 이름을 나타냅니다 수 SQL 개의 검색어를 사용하는 동안 udf

예컨대

spark-submit --jars /path/to/udf.jar <all-other-param>

:

pyspark --jars /path/to.udf.jar <all-other-param>

또는

이 같은 --jars 옵션으로 pyspark 작업을 제출로

sqlContext.udf().register("slen", 
     (String arg1) -> arg1.length(), 
     DataTypes.IntegerType); 

sqlContext.sql("SELECT slen(name) FROM user").show(); 
1

pyspark 쉘을 시작

관련 문제