Rozwiązywanie problemów z Databricks CLI

Uwaga

Korzystanie z interfejsu wiersza polecenia usługi Databricks podlega licencjom usługi Databricks i powiadomieniom o ochronie prywatności usługi Databricks, w tym wszelkim przepisom dotyczącym danych użycia.

Skorzystaj z poniższych informacji, aby rozwiązać problemy z interfejsem wiersza polecenia usługi Databricks.

Włącz rejestrowanie

Jeśli polecenie zakończy się niepowodzeniem lub nie generuje oczekiwanych danych wyjściowych, możesz użyć rejestrowania, aby zidentyfikować, co mogło pójść nie tak. Możesz rejestrować komunikaty wyjściowe interfejsu wiersza polecenia usługi Databricks dotyczące różnych zdarzeń poleceń, ostrzeżeń i błędów. Aby zarejestrować te komunikaty, określ następujące opcje polecenia interfejsu wiersza polecenia usługi Databricks:

Flaga opis
--log-file Ciąg reprezentujący plik do zapisu logów wyjściowych. Jeśli ta flaga nie zostanie określona, wartością domyślną jest zapisywanie dzienników wyjściowych w programie stderr.
--log-format text aby zapisywać dzienniki wyjściowe w tekście lub json zapisywać dzienniki wyjściowe w formacie JSON. Jeśli ta flaga nie jest określona, dzienniki wyjściowe są zapisywane jako tekst.
--log-level Ciąg znaków reprezentujący poziom formatu logu. Prawidłowe poziomy dziennika to error, warn, info, debug, trace, i disabled. Domyślnym poziomem jest disabled, co oznacza, że nic nie jest rejestrowane. --debug jest równoważne z --log-level debug.

Poniższe przykładowe polecenie rejestruje komunikaty śledzenia dla określonego polecenia do pliku o nazwie databricks-cli.log w formacie JSON.

databricks clusters list --log-file databricks-cli.log --log-format json --log-level trace

Błąd podczas pobierania programu Terraform

Wygasły klucz w niektórych wersjach interfejsu wiersza polecenia usługi Databricks powoduje następujący błąd podczas uruchamiania polecenia databricks bundle deploy:

error downloading Terraform: unable to verify checksums signature: openpgp: key expired

Aby rozwiązać ten błąd, uaktualnij interfejs wiersza polecenia usługi Databricks do najnowszej poprawkowej wersji, która aktualizuje mechanizm weryfikacji, aby działał z nowszym kluczem. Uaktualnij do wersji z poprawkami, która odpowiada bieżącej wersji pomniejszej Twojego interfejsu wiersza poleceń.

  • Instalacja binarna: Pobierz poprawioną wersję ze strony wydań Databricks CLI na GitHub.

  • setup-cli (jako skrypt instalacji lub akcja GitHub): zaktualizuj wersję w swojej konfiguracji do poprawkowej wersji ze strony wydań Databricks CLI na GitHub.

    Aby na przykład użyć 0.296.1 z akcją GitHub:

    - uses: databricks/setup-cli@main
      with:
        version: 0.296.1
    

Błąd przechowywanych poświadczeń

Począwszy od interfejsu wiersza polecenia usługi Databricks w wersji 1.0.0, interfejs wiersza polecenia usługi Databricks przechowuje tokeny uwierzytelniania użytkownika do komputera (U2M) w magazynie bezpiecznym natywnym dla systemu operacyjnego (pęku kluczy w systemie macOS, Menedżer poświadczeń w systemie Windows, D-Bus Secret Service w systemie Linux) zamiast pliku JSON. Zobacz Przechowywanie tokenów. Jeśli przepływ pracy opiera się na pliku JSON, nie będzie działać z nową metodą przechowywania i mogą wystąpić problemy w następujących scenariuszach:

  • Uaktualniono do ogólnie dostępnej wersji, ale nie zalogowano się jeszcze ponownie. Interfejs wiersza polecenia usługi Databricks nie odczytuje już poświadczeń przechowywanych przez starsze wersje i zwraca błąd:

    Stored credentials from older CLI versions are no longer used.
    Run "databricks auth login" to sign in again.
    
    If secure storage is not available in this environment, set
    DATABRICKS_AUTH_STORAGE=plaintext and re-run login.
    

    Uruchom polecenie databricks auth login , aby rozwiązać ten problem.

  • Sprawdzanie bezpiecznego magazynu danych kończy się błędem podczas logowania Podczas databricks auth login interfejs wiersza polecenia Databricks sprawdza bezpieczny magazyn danych przed rozpoczęciem przepływu OAuth. Jeśli sprawdzanie nie powiedzie się (najczęściej w kontenerach systemu Linux, sesjach SSH, WSL1 i serwerach bezgłowych, na których nie działa usługa D-Bus), zachowanie zależy od tego, czy bezpieczny magazyn został jawnie skonfigurowany:

    • Tryb domyślny, bez jawnego ustawienia przechowywania: interfejs wiersza polecenia Databricks po cichu przechodzi do jawnego tekstu i zapisuje auth_storage = plaintext do sekcji [__settings__] w ~/.databrickscfg. Kolejne polecenia używają tekstu jawnego bez ponownego sprawdzania.
    • Jawny tryb zabezpieczeń (DATABRICKS_AUTH_STORAGE=secure lub auth_storage = secure w profilu konfiguracji): Databricks CLI zwraca błąd wskazujący na mechanizm awaryjny DATABRICKS_AUTH_STORAGE=plaintext.

    Jeśli sprawdzenie przekroczy limit czasu zamiast od razu zakończyć się niepowodzeniem (na przykład gdy baza kluczy jest zablokowana, ale dostępna), Databricks CLI zachowuje backend bazy kluczy, a monit systemu operacyjnego o odblokowanie uruchamia się równolegle z przepływem OAuth w przeglądarce.

    Aby potwierdzić, którego trybu przechowywania używa Databricks CLI po zalogowaniu się, uruchom polecenie databricks auth describe.

  • Pęk kluczy jest niedostępny podczas odczytywania przechowywanego tokenu. W przeciwieństwie do sytuacji podczas logowania, CLI Databricks nie przełącza się automatycznie na rozwiązanie zastępcze, gdy podczas odczytu tokenu nie może uzyskać dostępu do pęku kluczy. Jeśli na przykład zalogowano się na komputerze stacjonarnym, a następnie nawiązano połączenie za pośrednictwem protokołu SSH w sesji bezgłowej, polecenia, które potrzebują przechowywanego tokenu, kończą się niepowodzeniem z powodu błędu. Użyj mechanizmu zastępczego w postaci zwykłego tekstu, aby rozwiązać ten problem. Zobacz Używanie zwykłego tekstu jako alternatywy.

Polecenia się nie kończą

Jeśli uruchomisz polecenie, takie jak databricks cluster list i wydaje się, że zawiesza się, zaktualizuj wersję interfejsu wiersza polecenia usługi Databricks do najnowszej wersji. Wcześniejsze wersje CLI podejmowały próbę załadowania pełnych list, nawet jeśli liczba elementów na liście była duża, a polecenie wydawało się, że nie zostało ukończone.