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

input_file_name()不支持統一目錄

espenol”id=
新的貢獻者三世

嘿,我們的筆記本電腦閱讀一堆json文件從存儲通常使用input_file_name()當從原始到青銅,但升級到統一目錄後,我們得到一個錯誤信息:

AnalysisException: [UC_COMMAND_NOT_SUPPORTED] input_file_name統一目錄。不支持;

這是為什麼呢?我們想壞實踐後的文件名跟蹤數據通過不同的存儲層嗎?並統一目錄可能以某種方式自動的呢?剛剛開始測試統一目錄,所以努力掌握的區別是什麼。我認為這僅僅是一個工具,自動做了一些東西(血統等),給了我們一個簡單的metastore與。

6個回答6

塞德裏克”id=
價值貢獻”id=
價值貢獻

嗨@Espen Solvang,

謝謝你向我們伸出援手。Python UDF / UDAFs或熊貓UDF目前不支持共享統一目錄中的集群。相反,請改變模式”單用戶”。這應該支持input_file_name。

espenol”id=
新的貢獻者三世

非常感謝你的回應。我將試一試,回到你。

不確定我明白input_file_name()是一個UDF——我自己沒有寫,從pyspark進口。我猜你說的是,它仍然是一個UDF,如果我錯了,請糾正我。

najmead”id=
新的貢獻者三世

我不能回答的問題為什麼input_file_name統一目錄()不工作,但我還是設法找到一個解決方案,使用文件的元數據。

你可以查詢_metadata字段,它會給你一個json字符串文件路徑、名稱、大小和修改日期時間。所以這樣的事情應該工作;

選擇。_metadata (“file_name”),從my_catalog.my_schema.my_table *

harraz”id=
新的貢獻者三世

這不會工作,如果你是第一次創建表的流,例如當首次運行下麵的代碼。我需要一種方法來捕捉文件名的流

#配置自動加載程序
streaming_query = (spark.readStream
格式 ( “cloudFiles” )
.option ( “cloudFiles.format” , “csv” )
.option ( “cloudFiles.schemaLocation” raw_checkpoint_path)
.option ( “9” , “|” )
.option ( “inferSchema” , “真正的” )
.option ( “lineSep” , “\ r \ n” ) #指定樣式的EOL字符(CRLF)
.option ( “pathGlobfilter” file_pattern)
.load ( f” {file_path} )
.select ( “*” ,input_file_name ().alias ( “source_file” ),current_timestamp () .alias ( “processing_time” ))
.writeStream
.option ( “checkpointLocation” raw_checkpoint_path)
.trigger (availableNow = 真正的 )
.toTable (raw_table_name))
歡迎來到磚社區:讓學習、網絡和一起慶祝

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

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

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

Baidu
map