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

錯誤的Python API DeltaTables磚10.4 LST火花

maartenvr
新的貢獻者三世

你好,

我使用一個(Azure)磚計算集群Jupyter筆記本使用磚連接的Python包。我們的集群Databrick運行時10.4 LST和前後一致地使用databricks-connect = = 10.4.18我。

在我的筆記本,我能夠正確加載火花以及三角洲圖書館。

麻煩開始當我試著讀一個或我們的表作為DeltaTable。

當我試著從我們的存儲、讀取DeltaTable它抱怨forPath方法不存在,即使我的筆記本發現類型提示的方法。

我得到以下錯誤消息:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Py4JError回溯(最近調用最後)細胞[18],1號線- - - - - > 1 DeltaTable。forPath(火花,“abfss: / / dev@ * * * * *.dfs.core.windows.net/example”)文件~ \ \培訓\ delta_lake \ .venvδ\ \ lib \網站\表。py: 364年DeltaTable。forPath (cls sparkSession、路徑、hadoopConf) 361 jvm:“JVMView”= sparkSession._sc。_jvm #類型:忽略[attr-defined] 362 jsparkSession:“JavaObject”= sparkSession。_jsparkSession #類型:忽略(attr-defined) - - > 364 jdt = jvm.io.delta.tables.DeltaTable.forPath (jsparkSession、路徑、hadoopConf) 365年返回DeltaTable (sparkSession jdt)文件~ \ \培訓\ delta_lake文檔\ .venv \ lib \網站\ py4j \ java_gateway。py: 1304年JavaMember。__call__(自我,* args) 1298命令=原型。CALL_COMMAND_NAME + 1300 \ 1299 self.command_header + \ args_command + \ 1301原型。END_COMMAND_PART 1303回答= self.gateway_client.send_command(命令)- > 1304 return_value = get_return_value(1305回答,自我。gateway_client,自我。target_id self.name) 1307年在temp_args temp_arg: 1308 temp_arg._detach()文件~ \ \培訓\ delta_lake \ .venv \ lib \網站\ pyspark \ sql \跑龍套。py: 117年,在裝飾capture_sql_exception . .(*, * *千瓦)115年def德科(*,* *千瓦):116試:- - > 117返回f(*, * *千瓦)118 py4j.protocol除外。Py4JJavaError e: 119轉換= convert_exception (e.java_exception)文件~ \ \培訓\ delta_lake文檔\ .venv \ lib \網站\ py4j \協議。py: 330年get_return_value(答案,gateway_client、target_id名稱)326年籌集Py4JJavaError(327”時發生一個錯誤調用{0}{1}{2}。\ n”。328格式(target_id”。“,name), value) 329 else: --> 330 raise Py4JError( 331 "An error occurred while calling {0}{1}{2}. Trace:\n{3}\n". 332 format(target_id, ".", name, value)) 333 else: 334 raise Py4JError( 335 "An error occurred while calling {0}{1}{2}". 336 format(target_id, ".", name)) Py4JError: An error occurred while calling z:io.delta.tables.DeltaTable.forPath. Trace: py4j.Py4JException: Method forPath([class org.apache.spark.sql.SparkSession, class java.lang.String, class java.util.HashMap]) does not exist at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:341) at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:362) at py4j.Gateway.invoke(Gateway.java:289) at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) at py4j.commands.CallCommand.execute(CallCommand.java:79) at py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:195) at py4j.ClientServerConnection.run(ClientServerConnection.java:115) at java.lang.Thread.run(Thread.java:748)

以下代碼示例是澄清工作,沒有什麼:

進口pyspark三角洲。表導入* #工作,證明我是一個有效的表df_exampleδ=火花。sql (“SELECT * FROM dev.example”) #作品,但不是我想要的:返回一個正常火花DF,我想要一個三角洲表對象:df_example = spark.read.format .load(“δ”)(“abfss: / / dev@ * * * * *.dfs.core.windows.net/example”) #給了一個錯誤,盡管我的筆記本承認forPath命令類型提示:delta_example = DeltaTable。forPath(火花,“abfss: / / dev@ * * * * *.dfs.core.windows.net/example”) #也拋出一個錯誤:delta_example = DeltaTable。forName(火花,“dev.example”)

有人知道問題是什麼嗎?

1接受解決方案

接受的解決方案

Murthy1
因素二世

你好@Maarten van Raaij,

根據文檔(https://docs.www.eheci.com/dev-tools/databricks-connect.html限製)——這是一個磚限製連接。不幸的是,你必須使用火花。sql或dataframes

在原帖子查看解決方案

5回複5

Murthy1
因素二世

你好@Maarten van Raaij,

根據文檔(https://docs.www.eheci.com/dev-tools/databricks-connect.html限製)——這是一個磚限製連接。不幸的是,你必須使用火花。sql或dataframes

maartenvr
新的貢獻者三世

你好@Murthy Ramalingam,

這就解釋了!謝謝你的快速回答。

它會工作如果我使用筆記本從磚內的環境,還是使用磚連接還需要我嗎?

你好@Maarten van Raaij,

如果您使用的是磚筆記本——你不需要磚的連接。

也DeltaTable的功能。forPath非常光滑。已經說過,你的磚筆記本應該連接到Azure blob存儲的路徑。

maartenvr
新的貢獻者三世

完美!謝謝你的幫助。:thumbs_up:

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

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

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

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

Baidu
map