# Dremio OSS — Konfigurasi `deploy/` Dremio ditambahkan sebagai **query engine paralel** di atas catalog Nessie yang sama dengan Trino & StarRocks (membuktikan dua engine berbagi satu catalog tanpa korupsi metadata). | Item | Nilai | |---|---| | Image | `dremio/dremio-oss:${DREMIO_VERSION:-25.2.0}` | | Web UI | `http://localhost:${DREMIO_UI_PORT:-12947}` | | JDBC | `${DREMIO_JDBC_PORT:-12010}` → container `31010` | | Arrow Flight | `${DREMIO_FLIGHT_PORT:-12011}` → container `32010` | | Auth | **Lokal** (bukan OIDC — Dremio OSS tidak menyediakan OIDC) | | Penyimpanan internal | Volume `dremio-data` (bukan PostgreSQL) | ## First-run & Source Nessie — otomatis via `bootstrap.sh` (Step 9) `bootstrap.sh` **Step 9** menangani first-run admin + registrasi source Nessie secara idempoten (aman diulang): 1. Tunggu Dremio siap. 2. Buat admin first-run bila belum ada — `PUT /apiv2/bootstrap/firstuser` (body flat, tanpa auth; `400` = sudah pernah dibuat → dilewati). 3. Panggil `scripts/dremio/register-nessie-source.sh` untuk source Nessie. Kredensial default (override lewat `.env`): | Variabel | Default | |---|---| | `DREMIO_USER` | `admin` | | `DREMIO_PASSWORD` | `dremio_admin_DevOnly1` | | `DREMIO_ADMIN_EMAIL` | `admin@sicabe.local` | Jalankan hanya step ini: ```bash cd deploy ./bootstrap.sh --step 9 ``` ### Manual (alternatif) 1. Buka `http://localhost:12947` → buat akun admin pertama (form first-run). 2. Daftarkan source Nessie lewat script: ```bash cd deploy set -a; source config/environment.defaults.sh; source .env; set +a DREMIO_USER= DREMIO_PASSWORD='' \ ./scripts/dremio/register-nessie-source.sh ``` Script: login (`/apiv2/login`, header `Authorization: _dremio`) → cek existing (`/api/v3/catalog/by-path/`) → `POST /api/v3/catalog` (`type=NESSIE`). Idempotent (source sudah ada → sukses tanpa buat ulang). > **Temuan (diuji 2026-09-10, Dremio OSS 25.2.0):** klaim docs bahwa Catalog API > "unable to retrieve or manage Nessie sources" (DX-64994) **tidak akurat** — > create **dan** GET by-path berhasil. Kunci config yang benar: > - **JANGAN** sertakan `storageType` (ditolak: `Invalid value found at: storageType`). > - `awsRootPath` format **`/bucket/path`** (TANPA prefix `s3://`), mis. `/iceberg-data/warehouse`. > - `credentialType=ACCESS_KEY`, `awsAccessKey`/`awsAccessSecret`, `secure=false`. > - `propertyList`: `fs.s3a.path.style.access=true`, `fs.s3a.endpoint=minio:9000`, > `dremio.s3.compat=true`. Verifikasi query (data yang sama ditulis Trino): ```sql SELECT * FROM nessie.demo.t ORDER BY id; -- 2 baris: alpha, beta ``` ### Alternatif: via UI **Add Source → Nessie** dengan field: endpoint `http://nessie:19120/api/v2`, Authentication `None`, Storage AWS S3/MinIO (path-style, endpoint `minio:9000`), access key/secret MinIO. ## Catatan - **Dua engine berbagi satu Nessie catalog**: tulis dari Dremio (CTAS/INSERT) langsung terlihat di Trino dan sebaliknya. Lakukan tulis secara bergantian (bukan simultan) untuk menghindari konflik concurrency Nessie. - Nessie **tidak mendukung Iceberg spec v3** → gunakan `format-version=2`. - Referensi: `experiments/nessie-dremio/README.md` (H2 terbukti).