2017-04-13 90 views
0

我想加上星火SQL新的操作,我已經使用了形式添加自定義操作星火SQL

dataframe.filter(udf("$a", "$b")) 

我需要添加類似功能的用戶自定義功能,但在兩個dataFrames操作,對於例如添加功能,如:

dataframe1.udf(dataframe2)) 

爲了更精確,則該函數是在兩個dataframes優化的聯接。

實際的代碼

CustomJoin(dataframe1,dataframe2) 

這可能使用用戶定義的函數?任何其他解決方案或例子?

+0

能你對你確切想要做什麼更具體? – mtoto

+0

顯然,閱讀鏈接。這不可能。我想寫一個自定義連接。實際上,代碼的工作方式就像'CustomJoin(df1,df2)'。我的目標是像這樣改變它'df1.CustomJoin(df2)' – syl

+0

你能提供示例數據,代碼和預期輸出嗎?截至目前,您的問題仍然過於寬泛。 – mtoto

回答

0

您可以使用隱含了這一點:

class AugmentedDataFrame(val df: DataFrame) { 
    def CustomJoin(df2: Dataframe){ ......} 
} 

object DataFrameImplicits { 
    implicit def dfToAugmentedDataFrame(df: DataFrame) = new AugmentedDataFrame(df) 
} 

然後:

import DataFrameImplicits._ 
df.CustomJoin(df2) 

,以瞭解更多如何使用隱式的自定義方法添加到現有的類: Add Your Own Methods to the String Class

+0

你能解釋更多你的解決方案嗎?爲什麼我需要在這種情況下使用implicits。 – syl

+0

我添加了一個鏈接,以瞭解更多關於隱含在您的案例中使用的鏈接 – Mehrez

+0

您的答案完美無缺。你知道是否有一種方法來擴展這個使用SQL'Select * from t1 CustomJoin t2' – syl

相關問題