除了CI / CD鏈接我上麵貼的,沒有被發現。
很多公司使用jar部署腳本。當使用這種方法可以將軟件工程實踐應用到您的腳本。
但是,說:磚極為重視筆記本(和python),慢慢地轉向了“舊”的火花的工作方式。
那將是很棒的SE筆記本框架,現在缺乏的東西。
DBX,三角洲住表(僅python / sql),但這些遠非理想。
非常有價值的東西雖然是git進行數據的框架如LakeFS或尼斯湖水怪。總是使用生產數據為dev / qa和提交分支(這可以合並或不是)。
好的,謝謝你的回複。
我找到了一份不同的解決方案。盡管起程拓殖可能是一個整潔的選項,我寧願主要用它來IaC-type操作。
我所做的(而不是在許多不同的DDL -筆記本電腦)是一個DDL筆記本。這個筆記本閱讀從一個控製表查詢的湖(這也可以駐留在專用的DB輕鬆覆蓋多個DBX工作區)。
ddl注冊表中標記為“等待”,如果要執行的下一個版本。作為發布過程的一部分,然後然後再標記為non-pending執行。這樣可以確保語句隻執行一次,例如,alter語句。同時讓你的DDL的曆史。
這是代碼。希望它能幫助別人:
% # # #插入sql Create Table語句插入日曆維度控製。QueryOrder DDL (SchemaName、表名、字串,PendingIndicator, LastExecutedDateTime, DLCreatedDateTime)值(“黃金”、“DimCalendar”、“”“創建表黃金。DimCalendar (DLKey長整型數字生成的總是作為身份(1)從0開始增加,CalendarDateID日期NOT NULL, DayShortName字符串NOT NULL, DayLongName字符串NOT NULL, WeekDayNumber整數NOT NULL, MonthShortName字符串NOT NULL, MonthLongName字符串NOT NULL, MonthDayNumber整數NOT NULL, QuarterNumber整數NOT NULL, QuarterShortName字符串NOT NULL, QuarterLongName字符串NOT NULL, YearShort整數非空,一整數NOT NULL, YearDayNumber整數NOT NULL, YearWeekISONumber整數NOT NULL, YearMonthNumber整數NOT NULL, OrdinalDayNumber整數NOT NULL, OrdinalCalendarYearNumber整數NOT NULL, DLCreatedDateTime時間戳NOT NULL, DLUpdatedDateTime時間戳NOT NULL)使用三角洲位置“/ mnt / ContainerNameGold / DimCalendar“”“”, 0, 1, NULL, Current_Timestamp)
python % # # #這是等待執行的邏輯ddl ExecutionDF =火花。從控製sql (“SELECT *。DDL PendingIndicator在哪裏真正的ORDER BY SchemaName,表名,QueryOrder”) ExecutionList = ExecutionDF.collect ExecutionList()我:打印(我["屬性"])spark.sql(我["屬性"])火花。sql (f“更新控製。DDL PendingIndicator = 0, QueryOrder = 0, LastExecutedDateTime = CURRENT_TIMESTAMP ID ={我[“ID”]}”)
% sql————形成DDL控製表:創建表如果不存在控製。生成DDL (ID BIGINT總是身份(從1增加1),SchemaName NOT NULL字符串,字符串表非空,非空字串字符串,QueryOrder INT, PendingIndicator布爾NOT NULL, LastExecutedDateTime時間戳,DLCreatedDateTime時間戳)使用三角洲位置“/ mnt / ContainerName /控製/ DDL”