Snowflake MigrationClickHouse Workshops

01 Lingkungan sumber

Panduan fasilitator untuk memprovisi lingkungan sumber Snowflake — waktu, producer yang harus terus berjalan, dan troubleshooting.

Pendamping fasilitator untuk pelajaran learner 01 Lingkungan sumber.

Waktu

Sekitar 45 menit total. Step 2 (./setup.sh) adalah satu-satunya rentang tanpa pengawasan — sekitar 5-10 menit, sebagian besar berupa seeding data sintetis TABLE(GENERATOR) — dan lebih baik diisi pembicaraan daripada ditonton dalam diam; ini momen bagus untuk alur pembicaraan di bawah. Sisa waktunya (Step 1 dan 3-5) butuh partner di keyboard: mengonfigurasi kredensial, memverifikasi producer dan Superset sudah naik, memulai loop refresh dbt, dan membaca tujuh query.

Alur pembicaraan

  • Modul ini ada untuk membangun sumber yang layak dimigrasikan: satu kolom VARIANT, satu stream CDC, dua scheduled task, dan lapisan BI yang membaca di atas semuanya — bukan sekadar tabel mainan. Setiap satu dari itu menjadi keputusan migrasi spesifik di modul 02.
  • Telusuri bentuk Medallion sekali pada diagram: RAW -> STAGING -> ANALYTICS di dalam NYC_TAXI_DB, dan dua objek yang membuatnya terus bergerak secara independen dari dbt — TRIPS_CDC_STREAM dan dua scheduled task.
  • Tunjuk pustaka query (Step 5) meskipun partner belum akan menerjemahkan query-nya sampai modul 02 — masing-masing dari tujuh query sudah membawa komentar yang menyketsa sisi ClickHouse, sehingga partner bisa mulai mencocokkan pola sekarang.
  • Nyatakan dengan jelas, dan ulangi di akhir modul: biarkan producer dan loop refresh dbt tetap berjalan. Cutover modul 05 mengukur selisih persis yang diciptakan producer antara Snowflake dan ClickHouse selama migrasi, dan partner yang beres-beres dengan menghentikannya di sini secara diam-diam merusak demonstrasi itu tiga modul kemudian.

Kegagalan umum

  • terraform init gagal dengan error provider. Konfirmasi Terraform >= 1.6 dan bahwa mesin memiliki akses internet ke Terraform registry.
  • snowsql connection refused. Verifikasi SNOWFLAKE_ORG dan SNOWFLAKE_ACCOUNT; uji langsung dengan snowsql -a ${SNOWFLAKE_ORG}-${SNOWFLAKE_ACCOUNT} -u ${SNOWFLAKE_USER}.
  • dbt run gagal dengan relation not found. Jalankan ./setup.sh --skip-seed lebih dulu — ia membuat struktur database — dan konfirmasi profiles.yml mengarah ke NYC_TAXI_DB.
  • Superset menampilkan connection refused. Superset butuh sekitar 60 detik setelah docker-compose up untuk inisialisasi; periksa docker logs nyc_taxi_superset jika ia masih mati setelah itu.
  • Seeding data memakan waktu lebih lama dari perkiraan partner. Insert TABLE(GENERATOR) menghasilkan 50M baris dalam sekitar 10-12 menit; UPDATE lanjutan yang mengisi kolom JSON TRIP_METADATA pada seluruh 50M baris dapat menambah 15-20 menit lagi pada warehouse SMALL. Ini perilaku Snowflake yang normal untuk update kolom VARIANT besar, bukan stall — katakan itu sebelum partner mulai men-troubleshoot skrip yang sebenarnya berjalan dengan benar.
  • Partner menghentikan producer trip begitu modul ini terlihat "selesai." Belum — modul 02 sampai 05 semuanya bergantung padanya tetap hidup, dan cutover modul 05 secara khusus mengukur selisih yang diciptakannya. Ini adalah kesalahan akibat naluri beres-beres yang paling merusak di seluruh workshop; katakan secara eksplisit, lebih dari sekali.

Langkah reset

  • Provisioning ulang tanpa membayar lagi pemuatan data ~10 menit: ./setup.sh --skip-seed (infrastruktur sudah ada dan TRIPS_RAW sudah punya data).
  • Iterasi pada perubahan Terraform atau SQL saja: cukup ./setup.sh --skip-seed.
  • Iterasi pada model dbt saja, melewati Superset sepenuhnya: ./setup.sh --skip-seed --skip-superset.
  • Menguji perubahan Terraform tanpa menjalankan ulang dbt: tambahkan --skip-dbt.
  • Setelah perubahan skema model dbt, paksa pembangunan ulang inkremental penuh: --full-refresh (gabungkan dengan --skip-seed agar tidak juga membayar lagi pemuatan data).
  • Reset penuh hanya jika lingkungan sudah tidak bisa diselamatkan: source .env && ./teardown.sh dari workshop_public/snowflake_migration_lab/01-setup-snowflake/, lalu jalankan ulang ./setup.sh biasa. Ini destruktif dan membayar lagi seluruh seeding ~10-12 menit — jangan langsung memakainya sebagai respons pertama untuk partner yang tersangkut.

Di halaman ini

ID