2016-12-16 94 views
0

有沒有辦法在Spark SCALA中編寫SQL宏(PL/SQL或用戶定義的函數)並在Spark SQL中使用它。Spark SQL中的SQL宏

例如宏基 -

CREATE Function getDeptEmployee(text IN TEXT) 
RETURN TEXT 
IS name TEXT 
Begin 
select employee_name into name from department where departmentId = text 
RETURN(name) 
End 

這樣我就可以在查詢中使用此getDeptEmployee。我想我不能使用udf,因爲我不能使用sqlContext。

+1

您可以分享示例數據和預期輸出嗎? SO不是教程服務。 – mtoto

回答

1

是的,你可以使用UDF

sqlContext.udf.register("getDeptEmployee", getDeptEmployee _) 

def getDeptEmployee(text: String): String = { 
    val spark2 = SparkSession 
     .builder() 
     .getOrCreate() 
    val id = spark2.sqlContext.sql(s"select employee_name into name from department where departmentId = '$text' LIMIT 1").collect()(0).getString(0) 
    id 
} 

註冊任何但是考慮使用你原來的查詢連接,而不是調用火花上下文(不叫它是相當精細和快速的UDF)

的UDF
+0

謝謝,這似乎是工作。 – ashK