這就跟你問聲好!
我們有一個項目,我們為客戶做一些數據工程。我實現了一個將批處理數據磚的自動裝卸機(流w / availableNow)因為他們出口從幾個來源主要有大量的文件。我們想按照圖案架構和英語教學。
待建的端點的數據倉庫,將主要是一個MySQL數據庫駐留在Azure。到目前為止,我的自動裝卸機輸出增量表而不是默認的蜂巢metastore。相反,我將它們保存到一個容器在ADLS存儲賬戶按來源。
從這裏,我打算建立剩下的金銀層表在單獨的容器。
欣賞任何輸入提供!
嗨Gim,請伸出你的團隊或客戶的磚帳戶。他們應該能夠幫助更多。我也會考慮統一目錄因為它會使你的數據管理更加容易。
讓你青銅、白銀和黃金容器在單獨的容器很好。它們可以在同一容器如果你想。的差異並不大。但總體上多個容器由區是好的。
(1)我不建議使用DW的MySQL數據庫。你已經將你所有的數據存儲在三角洲和ADLS。你應該使用磚SQL SQL計算。如果您使用一個MySQL然後你會複製數據,添加不必要的複雜性。你可以做ETL、數據倉庫、BI,流媒體,毫升磚。
(2)使用磚時你應該將你所有的業務數據存儲在ADLS存儲賬戶就像你正在做的事情。然而,你也可以創建數據庫在磚使用位置這將允許您注冊表在蜂房裏metastore ADLS在寫數據。然而,如果你使用統一目錄(與上圖)這將自動為您處理!
這裏是如何創建一個數據庫位置和保存dataframe表:
% python #創建數據庫火花。sql(“創建數據庫如果不存在my_db位置”abfss: / /(電子郵件保護)/道路/ / db) #設置默認數據庫火花。sql(“使用my_db”) #數據讀入df df = spark.read.json(“/道路/ /文件”)#寫δ表——注意,它將被保存到數據庫的默認位置df.write.saveAsTable (“my_table”)
如果你已經寫了一個表來三角洲ADLS蜂巢metastore但想注冊:
#數據寫入位置df.write.format(“δ”).save(“/道路/ /表”)#數據庫中的注冊表火花。sql(“”“創建表my_table SELECT *從三角洲。/道路/ /表”“”)#讀取數據使用sql火花。sql (“SELECT * FROM my_table”)
嗨Gim,請伸出你的團隊或客戶的磚帳戶。他們應該能夠幫助更多。我也會考慮統一目錄因為它會使你的數據管理更加容易。
讓你青銅、白銀和黃金容器在單獨的容器很好。它們可以在同一容器如果你想。的差異並不大。但總體上多個容器由區是好的。
(1)我不建議使用DW的MySQL數據庫。你已經將你所有的數據存儲在三角洲和ADLS。你應該使用磚SQL SQL計算。如果您使用一個MySQL然後你會複製數據,添加不必要的複雜性。你可以做ETL、數據倉庫、BI,流媒體,毫升磚。
(2)使用磚時你應該將你所有的業務數據存儲在ADLS存儲賬戶就像你正在做的事情。然而,你也可以創建數據庫在磚使用位置這將允許您注冊表在蜂房裏metastore ADLS在寫數據。然而,如果你使用統一目錄(與上圖)這將自動為您處理!
這裏是如何創建一個數據庫位置和保存dataframe表:
% python #創建數據庫火花。sql(“創建數據庫如果不存在my_db位置”abfss: / /(電子郵件保護)/道路/ / db) #設置默認數據庫火花。sql(“使用my_db”) #數據讀入df df = spark.read.json(“/道路/ /文件”)#寫δ表——注意,它將被保存到數據庫的默認位置df.write.saveAsTable (“my_table”)
如果你已經寫了一個表來三角洲ADLS蜂巢metastore但想注冊:
#數據寫入位置df.write.format(“δ”).save(“/道路/ /表”)#數據庫中的注冊表火花。sql(“”“創建表my_table SELECT *從三角洲。/道路/ /表”“”)#讀取數據使用sql火花。sql (“SELECT * FROM my_table”)
嗨@Ryan Chynoweth(磚)
道歉不是我希望盡快恢複。欣賞的輸入!
(1)後進一步討論和明確項目的需求,我認為不再需要存儲DW MySQL。唯一原因可能是認為首先是因為它是唯一RDBMS客戶端解決方案。現在他們有磚,不妨利用架構和平台。Beplay体育安卓版本我個人也不想處理的額外層複雜性隻是保持管道保持表更新本地MySQL和磚。
(2)我從來沒有意識到我可以做兩個注冊表在蜂巢metastore和儲存ADLS三角洲表中。我總是認為這是一個。我一定會看在統一目錄,看看我很快就可以實現的。這可以在單個readStream完成和writeStream電話嗎?這就是我目前:
火花.readStream .format .option (“cloudFiles (“cloudFiles”)。形式at", source_format) .option('header', 'true') .option("cloudFiles.schemaLocation", schema_path) .load(adls_raw_file_path) .writeStream .format('delta') .outputMode('append') .queryName(query_name) .option('checkpointLocation', checkpoint_path) .option("mergeSchema", "true") .trigger(availableNow=True) .start(adls_delta_table_path)
嗨@Gimwell年輕,
它幫助快樂!統一目錄你指定一個默認位置在ADLS所有數據,所以應當為你處理。請伸出你的磚賬戶團隊學習更多。
創建和編寫管理表看起來像下麵這樣。請注意,有許多方法可以做到這一點。代碼的唯一的區別是“toTable”寫流。
df =(火花.readStream .format .option (“cloudFiles (“cloudFiles”)。形式at", source_format) .option('header', 'true') .option("cloudFiles.schemaLocation", schema_path) .load(adls_raw_file_path) ) (df.writeStream .format('delta') .outputMode('append') .queryName(query_name) .option('checkpointLocation', checkpoint_path) .option("mergeSchema", "true") .trigger(availableNow=True) .toTable("") )