取消
顯示的結果
而不是尋找
你的意思是:

火花。sql查詢到scala函數

TS
新的貢獻者三世

你好,

我正在學習Scala /火花和試著去理解我的功能:怎麼了

我有一個火花。sql查詢,存儲在一個變量中:

val uViewName =火花。sql (“v”選擇。從apoHierarchy Data_View_Name h內連接apoView h v。View_Name = v。Context_View_Name 1 = 1和h。Step_Number = 1”“”) uViewName.show ()

這給了我正確的結果:

+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | Data_View_Name | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | APO_S_VN_E1_APR_U……| + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

然後我想要包成這樣一個函數:

def getUniverse (x: Int):字符串= {var sn = x var stepNumber = x.toString () var uViewName =火花。sql (s”“v”選擇。從apoHierarchy Data_View_Name h內連接apoView h v。View_Name = v。Context_View_Name 1 = 1和h。Step_Number = $ stepNumber " " ")返回uViewName}

所以,我試圖實現的是:

  • StepNumber應該作為參數
  • 查詢需要這個參數和相應的查詢數據庫

但是,為什麼我得到這個錯誤消息?

command-4245198:14:錯誤:類型不匹配;發現:org.apache.spark.sql。DataFrame(擴大)org.apache.spark.sql.Dataset [org.apache.spark.sql。行)要求:字符串返回uViewName ^

當我改變返回語句:

返回uViewName.toString ()

它似乎工作:

getUniverse:(x: Int)字符串

最後當運行def,不應該得到一個字符串“APO_S_VN_E1_APR_U…”?

val x = getUniverse (1) println (x)
[Data_View_Name: string] x:字符串= [Data_View_Name字符串):

謝謝你任何建議/提示!

1接受解決方案

接受的解決方案

Hubert_Dudek1
尊敬的貢獻者三世

嚐試添加當代()(0)它將隻返回值從第一行/列目前你正在返回數據集:

var uViewName =火花。sql (s”“v”選擇。從apoHierarchy Data_View_Name h內連接apoView h v。View_Name = v。Context_View_Name 1 = 1和h。Step_Number = $ stepNumber”“”)當代()(0)

在原帖子查看解決方案

3回複3

Hubert_Dudek1
尊敬的貢獻者三世

嚐試添加當代()(0)它將隻返回值從第一行/列目前你正在返回數據集:

var uViewName =火花。sql (s”“v”選擇。從apoHierarchy Data_View_Name h內連接apoView h v。View_Name = v。Context_View_Name 1 = 1和h。Step_Number = $ stepNumber”“”)當代()(0)

TS
新的貢獻者三世

是的,解決。謝謝你!

(1)火花工作APR_S_VN_E1_APR_UNIVERSE x: = APR_S_VN_E1_APR_UNIVERSE字符串

Hubert_Dudek1
尊敬的貢獻者三世

很高興聽到。如果它是可能的,請按我的答案是最好的。

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map