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

推薦ETL工作流每周攝入. sql。tz“數據庫轉儲”從Blob存儲到統一Catalogue-enabled Metastore

scvbelle
新的貢獻者三世

客戶端收到來自第三方的數據是每周的“datadumps”一個MySQL數據庫複製到Azure Blob存儲賬戶容器(我懷疑這是手工完成,我還懷疑之間的變化約7 gb文件非常小)。我需要自動化攝入的變化在我的主目錄。

我正在試圖讓視圖訪問源數據庫,但同時…

失敗後得到一個工作創1連接使用火花配置參數存儲帳戶使用管理身份和服務原則(AbfsRestOperatonException) (https://community.www.eheci.com/s/question/0D58Y00009pvzofSAA/unity-catalogerror-creating-table-errorclassinvalidstate-failed-to-access-cloud-storage-abfsrestoperationexception),我升級到創2,最後發現賬戶仍將密鑰身份驗證而不是AAD身份驗證)和多天後我可以訪問該文件在Azure磚WS。

所以我有代Blob存儲保存為一個外部位置通過一個訪問訪問連接器,隻讀權限,這是據我得到

' ' '

# todo:三角洲tableify這個

#有趣的事實顯然與根文件夾中的文件有問題,但嘿,這是為我工作。

文件:sDataFrame =火花。sql(“列表abfss: / / source_container@source_sa.dfs.core.windows.net”)。

#寫輸出差值表,選擇新的/修改文件

#為每個新的/修改文件:

dbutils.fs.cp (“abfss: / /(電子郵件保護)/ modified_file.sql。廣州”、“abfss: / / test@datalake_dedicated_sa.dfs.core.windows.net/raw/source_name/../modified_file.sql.gz')

dbutils.fs.cp (“test@datalake_dedicated_sa.dfs.core.windows.net/raw/source_name/../modified_file.sql.gz'”,文件:/ tmp / temp.sql.gz”)

' ' '

' ' '

% sh

# gzip - d / tmp / temp.sql.gz

ls / tmp / temp.sql

' ' '

- >確認它是一堆輸出mysql查詢

所以我原來的計劃是自旋向上一個臨時sql server使用sqlcmd:

' ' '

% sh

旋度https://packages.microsoft.com/keys/microsoft.asc| sudo apt-key添加-

旋度https://packages.microsoft.com/config/ubuntu/20.04/prod.list| sudo三通/etc/apt/sources.list.d / msprod.list

' ' '

但細胞並沒有解決。

我一直在想,應該有一種攝取從火花. sql文件,所以我去sql解析器(sqlglot的兔子洞

(scala引發本地ParserInterface) (https://stackoverflow.com/questions/52108677/how-to-extract-tables-with-data-from-sql-dumps-using-spark),一個python等價的),但這些都針對表攝入,而不是數據庫/模式攝入水平。(加上穿過另一個(有趣的bug) (https://stackoverflow.com/questions/15434709/checksum-exception-when-reading-from-or-copying-to-hdfs-in-apache-hadoop)當試圖複製回外部位置)

我現在想從mysql,但我還是擔心訪問一個臨時的服務器設置在集群上(我猜我使用“localhost”),但我找不到任何任何人這樣做的例子。

有人有一個更好的/功能解決方案嗎?我迷路了int曠野,請幫助。

(我目前的計劃是手動設置一個服務器在我當地env和訪問它從磚和複製的一個版本,所以我至少可以看看數據,並保持努力爭取一個合理的數據來源……)

1接受解決方案

接受的解決方案

匿名
不適用

@Sylvia VB:

這裏有一些建議和注意事項,幫助你瀏覽的問題:

  1. 訪問MySQL datadumps:
  • 正如你提到的,獲得直接視圖訪問MySQL數據庫來源是理想的解決方案。這將允許您執行增量更新,而不是依靠每周datadumps。
    • 如果你無法直接訪問,你可以繼續的方法攝取datadumps從Azure Blob存儲。
  1. 訪問Azure Blob存儲:
  • 因為你已經升級到創2 Blob存儲和解決身份驗證問題,您現在可以使用磚訪問文件存儲賬戶。
    • 你提供的代碼片段,清單和複製文件,應該適合用於訪問修改後的文件。
  1. 處理MySQL datadumps:
  • 看來你是減壓的SQL轉儲文件和計劃執行的SQL語句使用SQL Server sqlcmd等工具。
    • 然而,直接執行SQL語句火花可能是一個更有效的方法,因為它不需要一種中間SQL服務器設置。
    • 你可以閱讀火花和執行語句中的SQL轉儲文件使用MySQL的JDBC驅動程序。這種方法允許您利用火花的分布式處理能力,避免設置和管理臨時SQL服務器的開銷。

在原帖子查看解決方案

5回複5

etsyal1e2r3
貢獻者

理想情況下你可以把數據作為json為blob。

或當你訪問,使python和創建表的sql連接blob(δ是默認的)。

否則,這個選項的工作嗎?

df = sc.textFile (< sql路徑。gz文件>)df.display ()

scvbelle
新的貢獻者三世

這就跟你問聲好!
對不起沒有及時回複(必須把這個項目放在一邊。)
我能夠把json blob和讀文本文件後改變存儲,等等。
我的問題是找到一個方法來解析一個數據庫。
對不起,我知道我原來的職位是非常清楚——謝謝你的輸入!

匿名
不適用

@Sylvia VB:

這裏有一些建議和注意事項,幫助你瀏覽的問題:

  1. 訪問MySQL datadumps:
  • 正如你提到的,獲得直接視圖訪問MySQL數據庫來源是理想的解決方案。這將允許您執行增量更新,而不是依靠每周datadumps。
    • 如果你無法直接訪問,你可以繼續的方法攝取datadumps從Azure Blob存儲。
  1. 訪問Azure Blob存儲:
  • 因為你已經升級到創2 Blob存儲和解決身份驗證問題,您現在可以使用磚訪問文件存儲賬戶。
    • 你提供的代碼片段,清單和複製文件,應該適合用於訪問修改後的文件。
  1. 處理MySQL datadumps:
  • 看來你是減壓的SQL轉儲文件和計劃執行的SQL語句使用SQL Server sqlcmd等工具。
    • 然而,直接執行SQL語句火花可能是一個更有效的方法,因為它不需要一種中間SQL服務器設置。
    • 你可以閱讀火花和執行語句中的SQL轉儲文件使用MySQL的JDBC驅動程序。這種方法允許您利用火花的分布式處理能力,避免設置和管理臨時SQL服務器的開銷。

scvbelle
新的貢獻者三世

這就跟你問聲好!
非常感謝這個響應,抱歉我延遲響應。
我最終紡絲專用Azure靈活MySQL serverrather比試圖設置一個集群機器上(太多的相互衝突的關係)。這工作得很好,但我不確定地認為這是最有效的解決方案。在轉儲讀書花了一個小時,然後讀表成磚了多個小時。

我做了調查處理直接轉儲火花,基於[這](https://stackoverflow.com/questions/52108677/how-to-extract-tables-with-data-from-sql-dumps-using-sp..。線程,但似乎有點不到可靠的自動化任務。

我將不得不重新審視這個因為我必須做一些改變從每個每周將捕獲/比較理想的不涉及後處理整個表,但那是我名單上往下一點

再次感謝!

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

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

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

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

Baidu
map