我試圖創建一個JAR, Azure磚工作,但一些代碼,當使用筆記本接口不工作當調用庫通過一份工作。奇怪的是,這項工作將完成第一個成功運行但在任何後續運行時,它就會失敗。我重新啟動我的集群上運行然後它會再次失敗第二次。
我已經創建了一個視圖dataframe:
val df = spark.read.parquet(路徑)df.createOrReplaceTempView(表1)
然而,當我去查詢視圖和一個聚合函數產生一個錯誤:
val get_max_id_array =火花。sql(“選擇馬克斯(% s)從表1”.format (get_id_column_array(0)))當代()
錯誤:
從用戶代碼:錯誤未捕獲throwable org.apache.spark.sql。AnalysisException:未定義的功能:“MAX”。這個函數既不是注冊臨時函數也不是一個永久的函數注冊數據庫中的“默認”。1號線pos 7
嗨@Tyler Tamasauckas,
我也麵臨同樣的問題與sql函數“上”和“散列”。
在罐子裏我們必須調用SparkSession.builder () .getOrCreate()或SparkContext.getOrCreate () API來獲取火花/ sparkcontext實例。
在罐子裏如果我們使用對象和主要()方法的方法,在第一次使用效果很好,後來就不知怎麼的. .奇怪的是失去的實例。不知道確切的原因。
周圍的工作是使用“對象. .擴展程序”的方法在罐子裏,那就是工作。
應用特征的方法是服用10秒更多的時間相比,對象和主要方法。這是第一次,也第一次活動。這是因為應用程序特征使用延遲初始化特性。適用於所有Scala應用程序。
如果我們仍然需要使用主方法的方法,引發實例定義為隱式和使用隱式無論我們使用該實例。
如。
對象SomeName {
def UserDefinedMethod(查詢:字符串)(隱式火花:SparkSession) = {spark.sql(查詢)}/ /這個UserDefinedMethod被隱式地火花。
def主要(args:數組[String]):單位= {
隱式val火花= SparkSession.builder () .getOrCreate ()
火花…
}
}
注意:對象擴展應用程序將參數從Scala 2.9開始。