00 การติดตั้ง
คู่มือผู้สอนสำหรับโมดูลงานเตรียมล่วงหน้า — การตรึงเวอร์ชัน Python การสมัครสองคลาวด์ และเหตุใดต้องทำให้เสร็จก่อนเวิร์กช็อปเริ่ม
คู่มือประกอบสำหรับผู้สอนของบทเรียนผู้เรียน 00 การติดตั้ง
การจัดเวลา
รวมประมาณ 30 นาที นี่เป็นงานเตรียมล่วงหน้า ไม่ใช่เนื้อหาของวันจัดเวิร์กช็อป — ส่งให้พาร์ตเนอร์ ก่อนวันเวิร์กช็อปและยืนยันว่าทำเสร็จในวันก่อนหน้า ไม่ใช่เช้าวันนั้น ไม่มีอะไรที่นี่ที่รันเองได้ ในความหมายของ "สั่งรันแล้วเดินจากไป" มันคือการติดตั้งเครื่องมือห้าตัว การสมัครบัญชีสองบัญชี การ clone หนึ่งครั้ง และการสร้าง virtualenv สองชุด ซึ่งทั้งหมดต้องมีมือของพาร์ตเนอร์ อยู่บนคีย์บอร์ดตลอดเวลา พาร์ตเนอร์ที่มาถึงโดยข้ามโมดูลนี้จะทำให้เสียเวลาในเวิร์กช็อปไปราว 30 นาทีเพื่อตามให้ทันแบบสด โดยแลกมาด้วยสิ่งที่โมดูล 01 ควรจะครอบคลุมในช่วงเวลานั้น
แนวการบรรยาย
- วางกรอบโมดูลนี้ว่าเป็นงานระบบพื้นฐาน ไม่ใช่เนื้อหา: สองคลาวด์ (Snowflake เป็นต้นทาง และ ClickHouse Cloud เป็นเป้าหมาย) สอง dbt adapter หนึ่งตัวต่อหนึ่งคลาวด์ และทั้งสอง adapter ใช้ข้อกำหนดขั้นต่ำของ Python เดียวกันอย่างเข้มงวด
- ข้อเท็จจริงหนึ่งเดียวที่ควรพูดออกมาให้ชัด และพูดมากกว่าหนึ่งครั้ง: ทั้ง
dbt-snowflakeและdbt-clickhouseต้องใช้ Python 3.11, 3.12 หรือ 3.13 ส่วน Python 3.14+ ทำให้ dependency ที่ส่งต่อกันมาร่วมกันตัวหนึ่งคือmashumaroเสียในทั้งสอง adapter - ชี้ให้เห็น virtualenv สองชุดที่แยกกัน —
workshop_public/snowflake_migration_lab/01-setup-snowflake/.venvและworkshop_public/snowflake_migration_lab/03-migrate-to-clickhouse/.venv— และอธิบายว่าเหตุใด จึงรวมเป็นชุดเดียวไม่ได้: สอง adapter ตรึงช่วงเวอร์ชันของ dependency ที่ขัดกัน - กระตุ้นให้สมัครทั้งสองคลาวด์ตั้งแต่ตอนนี้ ไม่ใช่ในวันจัดเวิร์กช็อป: ทั้งบัญชีทดลอง Snowflake และบัญชีทดลอง ClickHouse Cloud ไม่ควรกลายเป็นตัวขวางเมื่อโมดูล 01 เริ่มแล้ว
ปัญหาที่พบบ่อย
- Python 3.14+ ทำให้
dbt-snowflakeและdbt-clickhouseเสียผ่านmashumaroนี่คือ ปัญหาหลักของโมดูลนี้ และเป็นปัญหาที่อันตรายที่สุด เพราะการตรึงตัวแปลภาษาผิดจะไม่แสดง ความผิดพลาดที่นี่ — มันจะปรากฏขึ้นสองโมดูลถัดไปในรูปของข้อผิดพลาดการ import ของ dbt ที่สับสน ซึ่งดูไม่มีความเกี่ยวข้องชัดเจนกับเวอร์ชันของ Python เลย ยืนยันว่าpython3 --versionรายงาน 3.11, 3.12 หรือ 3.13 สำหรับตัวแปลภาษาที่อยู่ เบื้องหลัง virtualenv แต่ละชุดจริง ๆ —workshop_public/snowflake_migration_lab/01-setup-snowflake/.venvและworkshop_public/snowflake_migration_lab/03-migrate-to-clickhouse/.venv— ไม่ใช่เพียง ค่าเริ่มต้นของระบบ — ก่อนที่จะเซ็นรับรองว่าพาร์ตเนอร์ผ่านโมดูลนี้ - TODO: ไม่มีรูปแบบความผิดพลาดอื่นของโมดูลนี้ที่ถูกบันทึกไว้ใน README ของแล็บเอง
บันทึกสิ่งอื่นที่สังเกตพบระหว่างการซ้อมไว้ที่นี่ (พร็อกซีหรือไฟร์วอลล์ขององค์กรที่ขวาง
pip installหรือterraform initการแจ้งเรื่องสัญญาอนุญาตของ Docker Desktop เมื่อเปิดครั้งแรก ความล่าช้าในการอนุมัติการสมัครบัญชีทดลอง)
ขั้นตอนการรีเซ็ต
- เวอร์ชัน Python เบื้องหลัง venv ผิด:
cdเข้าไปใน virtualenv ของโมดูลที่ผิด —workshop_public/snowflake_migration_lab/01-setup-snowflake/หรือworkshop_public/snowflake_migration_lab/03-migrate-to-clickhouse/— แล้วลบและ สร้างใหม่โดยใช้ตัวแปลภาษาที่ตรึงไว้ ตัวอย่างเช่นrm -rf .venv && python3.13 -m venv .venv && source .venv/bin/activateและติดตั้ง adapter ของ venv นั้นใหม่ตามที่แสดง ไว้ในขั้นตอนที่ 4 ของหน้าผู้เรียน - ไม่มีสคริปต์รื้อถอนที่ใช้กับโมดูลนี้ — ยังไม่มีการจัดเตรียมสิ่งใดในคลาวด์ทั้งสอง หากพาร์ตเนอร์ต้องทำขั้นตอนใดซ้ำ การรันขั้นตอนนั้นใหม่ประหยัดกว่าการรีเซ็ต อะไรทั้งนั้น
- TODO: ยืนยันระหว่างการซ้อมว่าการแจก venv ที่สร้างไว้ล่วงหน้าคุ้มค่าหรือไม่สำหรับห้องที่ Wi-Fi ไม่เสถียร แทนที่จะติดตั้งเครื่องมือห้าตัวและ venv สองชุดแบบสดในวันจัดเวิร์กช็อป