你好,
我使用一個(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”)
有人知道問題是什麼嗎?