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

在集群磚使用DeltaLog類

pokus
新的貢獻者三世

我需要使用DeltaLog類在代碼中獲取addfile數據集。我必須保持在回購實現代碼並運行它在磚集群。

一些醫生說org.apache.spark.sql.delta.DeltaLog類,但似乎磚在運行時和我擺脫它NoClassDefFoundError: org/apache/spark/sql/delta/DeltaLog $當在集群上運行使用

= org.apache.spark.sql.delta.DeltaLog.forTable val文件(火花,路徑(db,表)).unsafeVolatileSnapshot .allFiles

當我使用提供配置為% %“io.delta三角洲核心”依賴,當我嚐試運行提供,有異常IllegalArgumentException:要求失敗:配置條目spark.databricks.delta.timeTravel.resolveOnIdentifier.enabled已經注冊!

https://kb.m.eheci.com/en_US/sql/find-size-of-table說使用com.databricks.sql.transaction.tahoe.DeltaLog但這類外io.delta包編譯問題的原因。我甚至不能定義jar(來源com.databricks.sql.transaction.tahoe.DeltaLog它明確導入我的構建。這段代碼在集群的工作

val deltaTable = deltaTable。forPath(火花,路徑)deltaTable.getClass.getMethod (deltaLog) .invoke (deltaTable) .asInstanceOf [com.databricks.sql.transaction.tahoe。DeltaLog] .snapshot .allFiles

但就像我說的我不能把它放在我的代碼,因為編譯問題

我如何使用我的代碼和DeltaLog集群上運行這段代碼的可能性嗎?

1接受解決方案

接受的解決方案

pokus
新的貢獻者三世

我能夠解決這個問題隻使用反射

val deltaTable = deltaTable。forPath(火花,路徑(數據庫、表))val deltaLog = deltaTable.getClass.getMethod (deltaLog) .invoke (deltaTable) val快照= deltaLog.getClass.getMethod (unsafeVolatileSnapshot) .invoke (deltaLog) val allFiles = snapshot.getClass.getMethod (allFiles) .invoke(快照).asInstanceOf [DataFrame]

但它將很好的解決依賴性問題,有可能DeltaLog使用三角洲api

在原帖子查看解決方案

2回答2

pokus
新的貢獻者三世

我能夠解決這個問題隻使用反射

val deltaTable = deltaTable。forPath(火花,路徑(數據庫、表))val deltaLog = deltaTable.getClass.getMethod (deltaLog) .invoke (deltaTable) val快照= deltaLog.getClass.getMethod (unsafeVolatileSnapshot) .invoke (deltaLog) val allFiles = snapshot.getClass.getMethod (allFiles) .invoke(快照).asInstanceOf [DataFrame]

但它將很好的解決依賴性問題,有可能DeltaLog使用三角洲api

Kaniz
社區經理
社區經理

嗨@Artur Kiiko,你願意分享你的解決方案與其他成員展示了你的專業知識,強調了合作精神,讓我們的社會繁榮。

您的解決方案無疑節省時間和精力為我們的許多成員麵臨類似的挑戰,激發了其他人分享他們的知識。你的慷慨提供的見解和指導社區產生了持久的影響。

再一次,謝謝你的寶貴的貢獻,是我們社區成功的一個關鍵部分。我們期待您繼續參與和分享你的專業知識。

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

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

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

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

Baidu
map