使用 Airflow + Spark Operator 實作 Medallion data lakehouse
TBD
TBD
驗證 10G+ 資料集 JOIN 小表的執行結果
在 VM 上建置 K8S cluster 環境,有 4 核 16G 兩台,2 核 8G 一台
於 K8S cluster 部署 Kubeflow Spark Operator
於 K8S cluster 部署 minio
1 | ... |
與 spark 設定同樣的 memory 限制條件,出現 OOMKilled
spark 預設的 autobroadcast 表現最好
memory 不足,無法完成任務

加入 salting 可以讓數據在有限 memory 中「排隊」分批處理,完成任務
任務被平均分配到 executor 執行,作業時間平均,但是出現 Memory & Disk Spill
如果拆成更多 partition,可以降低 Memory & Disk Spill,比如切成 400
增加 memory 到 5G,沒有 Memory & Disk Spill
但實際作業時間變長
程式碼 repo:yuchun33/data-skew-exp
DONE.
如果資源 (asset) 是吻合 USD 格式的,它就可以被 Omniverse 解析和任意使用,概念上是這樣。但如果操作者是對 3D 開發陌生的職員,要實現順暢操作可能會沒有辦法很理所當然,但如果真的把步驟湊齊了,也還是會覺得沒那麼複雜。
因為業務需求接觸 Omniverse 這套模擬工具,在對電腦模擬、GPU 運算、電腦 3D 視覺都很陌生的背景之下,經過頻繁的比對文件、驗證和實作,在此分享我對這個工具截至目前能分享的心得。
業務需求是交通相關主題,幸運的是 Nvidia 有提供簡易外觀但屬性完整的四輪車模型。會基於這份檔案:






1 | geom = UsdGeom.Xform.Define(stage, path) |

這時候如果再建立一個 xform 再用 add reference 的方式匯入,方向是正確的
回頭看 ackermann steering 匯入後的環境,是 Y up。目前推測使用內建的 add reference(方法 c) 會自動轉換,但如果是自己的程式碼就需要自己轉換。
所以要去哪裡轉換?把心思放回 ackermann steering 的 source code。在匯入前環境是 Z up,匯入後才被轉換成 Y up。
確實有 gYZXAxes = AxesIndices(1, 2, 0) ,但要如何訂正?
有兩個方法:把 stage 改成 Y up 或把 veh.usda 改成 Z up,選一個適用專案的即可 (譬如其它需要匯入的模型預設是 Z up)
1 | from pxr import UsdGeom |
這邊用的方法是到 ackermann steering 的 source code 找到 create4WheeledCarsScenario,把參數 axes 由 AxesIndices(1, 2, 0) 改成 AxesIndices(2, 1, 0)。修改後要重新啟動 isaac-sim 才會生效,這個方法只適用在這個範例,但我也是透過這段 trace 才找到 UsdGeom.SetStageUpAxis(stage, UsdGeom.Tokens.y)
存檔後即可解決使用方法 d 匯入模型但方向不一致的情形。
第一步:下載 isaac-sim Download Isaac Sim — Isaac Sim Documentation,直到可以點選 isaac-sim-standalone@4.5.0-rc.3/isaac-sim.bat(版本可能不同,2025/12/12 當下已有 v.5.0)
1 | # 下載 isaac-sim-standalone@4.5.0-rc.3 後有預設的 isaac-sim.bat 可以使用 |
1 | # 接下來可以去看看 apps/my-isaacsim.exp.full.kit 裡面寫了什麼 |
1 | # 在 .kit 內的 [dependencies] 加上 |
產生 extension 需要使用 kit-app-template 這個工具 https://github.com/NVIDIA-Omniverse/kit-app-template?tab=readme-ov-file#quick-start
1 | # 下載 kit-app-template |
%20%E8%88%87%E5%A0%B4%E6%99%AF%E4%BA%92%E5%8B%95-assets/image.png)
1 | # 接下來只要把整個 extension 資料夾複製到 /isaac-sim-standalone@4.5.0-rc.36/exts 內就可以在 my-isaacsim.exp.full.kit 內的 [dependencies] 加上 |
啟動 my-isaac-sim 可以看到建立的 extension。
%20%E8%88%87%E5%A0%B4%E6%99%AF%E4%BA%92%E5%8B%95-assets/image2.png)
如果沒有自動出現可以去 window/extensions 內 enabled
%20%E8%88%87%E5%A0%B4%E6%99%AF%E4%BA%92%E5%8B%95-assets/image3.png)
1 | # 修改 \isaac-sim-standalone@4.5.0-rc.36\exts\my_company.my_python_ui_extension\my_company\my_python_ui_extension\extension.py |
1 |
|
%20%E8%88%87%E5%A0%B4%E6%99%AF%E4%BA%92%E5%8B%95-assets/GifMaker_20251211164844307.gif)
my_company.my_python_ui_extension 匯入錯誤1 | # 到 \isaac-sim-standalone@4.5.0-rc.36\exts\my_company.my_python_ui_extension\config\extension.toml 的 [dependencies] 加上依賴的 extension |
這些綜合起來可以完全自由開發了嗎?好像可以。
善用 isaac-sim-standalone 資料夾內的 example,直接從範例抄需要的功能因為文件很難找: \isaac-sim-standalone@4.5.0-rc.36\standalone_examples
下載 isaac-sim Download Isaac Sim — Isaac Sim Documentation
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
1 | $ hexo new "My New Post" |
More info: Writing
1 | $ hexo server |
More info: Server
1 | $ hexo generate |
More info: Generating
1 | $ hexo deploy |
More info: Deployment