當運行一些SQL查詢使用spark.sql(…),我們有時得到以下錯誤的變體:
AnalysisException:未定義的函數:current_timestamp。這個函數既不是內置/臨時函數,也不是一個持久性函數spark_catalog.default.current_timestamp資格。第2行pos 35
缺失的功能有時變化(例如,在其他情況下的UUID()),但它們的功能是標準磚SQL內置命令。
的SQL查詢使用pyspark被稱為代碼是在一個模塊中。
例子:
(不是實際的代碼,但是編輯的版本,因為我這裏不能粘貼一切)
我們在筆記本上運行:
從sql_utilities進口example_log_status example_log_status (id、狀態)
從我們的模塊sql_utilities.py進口代碼:
def example_log_status (id、地位):查詢= f”“foo”更新。exampleTable設置狀態= "{地位}”,ModifiedAt = current_timestamp () RunLogId =”““{RunLogId} spark.sql(查詢)
額外信息:
LTS磚運行時:11.3
這隻有當從Azure DataFactory工作計劃。我們不能複製這個手動運行這些查詢。並行工作一般安排在同一集群。
這是解決我的特殊情況下,它應該幫助你第一主題的問題。
我們使用這兩行代碼在圖書館在磚(whl文件圖書館集群全球init腳本)由我們自己的(需要用v9.1因為沒有火花會話沒有這個代碼):
sc = SparkContext.getOrCreate()火花= SparkSession (sc)
v11.3我們發現我們已經更換2行代碼隻有一個(的活動會話),以前的方法似乎不讚成:
火花= SparkSession.getActiveSession ()
和一切順利!