API REST 1.2

A API REST do Azure Databricks permite aceder programaticamente ao Azure Databricks em vez de ter de o fazer através da IU da Web.

Este artigo aborda a API REST 1.2. Na maioria dos casos de utilização, recomendamos utilizar a API REST 2.0. Suporta a maior parte das funcionalidades da API 1.2, bem como outras adicionais.

Importante

Para aceder às APIs REST do Databricks, tem de se autenticar.

Casos de utilização da API REST

  • Inicie trabalhos do Apache Spark acionados a partir dos seus sistemas de produção já existentes ou de sistemas de fluxos de trabalho.
  • Disponibilize programaticamente um cluster com um determinado tamanho numa altura fixa do dia e encerre-o à noite.

Categorias da API

  • Contexto de execução: crie espaços de nomes de variáveis nos quais seja possível chamar comandos do Spark.
  • Execução de comandos: execute comandos num contexto de execução específico.

Detalhes

  • Esta API REST é executada em HTTPS.
  • Para obter informações, utilize HTTP GET.
  • Para modificar o estado, utilize HTTP POST.
  • Para carregamento de ficheiros, utilize multipart/form-data. Caso contrário, utilize application/json.
  • O tipo de conteúdo da resposta é JSON.
  • A autenticação básica é utilizada para autenticar o utilizador em todas as chamadas à API.
  • As credenciais do utilizador são codificadas com base64 e estão no cabeçalho HTTP de todas as chamadas à API. Por exemplo, Authorization: Basic YWRtaW46YWRtaW4=.

Introdução

Nos exemplos seguintes, substitua <databricks-instance> pelo URL da área de trabalho da sua implementação do Azure Databricks.

Testar a ligação

> telnet <databricks-instance> 443

Trying 52.11.163.202...
Connected to <databricks-instance>.
Escape character is '^]'.

> nc -v -z <databricks-instance> 443
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif utun0
    src x.x.x.x port 59063
    dst y.y.y.y port 443
    rank info not available
    TCP aux info available

Connection to <databricks-instance> port 443 [TCP/HTTPS] succeeded!

Pode utilizar qualquer uma das ferramentas acima para testar a ligação. A porta 443 é a porta HTTPS predefinida e pode executar a API REST na mesma. Se não conseguir ligar à porta 443, contactehelp@databricks.com com o URL da sua conta.

Chamadas à API de exemplo

Os exemplos seguintes fornecem alguns comandos cURL, mas também pode utilizar uma biblioteca HTTP numa linguagem de programação à sua escolha.

Pedido GET

Nota

Se o seu URL contiver o caráter &, tem de incluir o URL entre aspas, para que o UNIX não o interprete como um separador de comando:

curl -n 'https://<databricks-instance>/api/1.2/commands/status?clusterId=batVenom&contextId=35585555555555&commandId=45382422555555555'

Pedido POST com aplicação/json

curl -X POST -n https://<databricks-instance>/api/1.2/contexts/create -d "language=scala&clusterId=batVenom"

Pontos finais da API por categoria

Contexto de execução

  • https://<databricks-instance>/api/1.2/contexts/create – criar um contexto de execução num cluster especificado para uma determinada linguagem de programação

    • Pedido POST com aplicação/json:
      • dados

        {"language": "scala", "clusterId": "peaceJam"}
        
  • https://<databricks-instance>/api/1.2/contexts/status – mostrar o estado de um contexto de execução já existente

    • Pedido GET:
      • Argumentos de exemplo: clusterId=peaceJam&contextId=179365396413324
      • status: ["Pending", "Running", "Error"]
  • https://<databricks-instance>/api/1.2/contexts/destroy – destruir um contexto de execução

    • Pedido POST com aplicação/json:
      • dados

        {"contextId" : "1793653964133248955", "clusterId" : "peaceJam"}
        

Execução de comando

Limitações conhecidas: a execução do comando não suporta %run.

  • https://<databricks-instance>/api/1.2/commands/execute – executar um comando ou ficheiro.

    • Pedido POST com aplicação/json:

      • dados

        {"language": "scala", "clusterId": "peaceJam", "contextId" : "5456852751451433082", "command": "sc.parallelize(1 to 10).collect"}
        
    • Pedido POST com multipart/form-data:

      • dados

        {"language": "python", "clusterId": "peaceJam", "contextId" : "5456852751451433082"}
        
      • ficheiros

        {"command": "./myfile.py"}
        
  • https://<databricks-instance>/api/1.2/commands/status – mostrar o estado ou resultado de um comando

    • Pedido GET
      • Argumentos de exemplo: clusterId=peaceJam&contextId=5456852751451433082&commandId=5220029674192230006
      • status:["Queued", "Running", "Cancelling", "Finished", "Cancelled", "Error"]
  • https://<databricks-instance>/api/1.2/commands/cancel – cancelar um comando

    • Pedido POST com aplicação/json:
      • dados

        {"clusterId": "peaceJam", "contextId" : "5456852751451433082", "commandId" : "2245426871786618466"}
        

Exemplo: Carregar e executar um JAR do Spark

Carregar um JAR

  1. Utilize a API REST 2.0 para carregar um JAR e anexe-o a um cluster.

Executar um JAR

  1. Crie um contexto de execução.

    curl -X POST -n  https://<databricks-instance>/api/1.2/contexts/create -d "language=scala&clusterId=batVenom"
    
    {
      "id": "3558513128163162828"
    }
    
  2. Execute um comando que utilize o JAR.

    curl -X POST -n https://<databricks-instance>/api/1.2/commands/execute \
    -d 'language=scala&clusterId=batVenom&contextId=3558513128163162828&command=println(com.databricks.apps.logs.chapter1.LogAnalyzer.processLogFile(sc,null,"dbfs:/somefile.log"))'
    
    {
      "id": "4538242203822083978"
    }
    
  3. Verifique o estado do comando. Se estiver a executar um trabalho longo do Spark, pode não ser devolvido imediatamente.

    curl -n 'https://<databricks-instance>/api/1.2/commands/status?clusterId=batVenom&contextId=3558513128163162828&commandId=4538242203822083978'
    
    {
       "id": "4538242203822083978",
       "results": {
         "data": "Content Size Avg: 1234, Min: 1234, Max: 1234",
         "resultType": "text"
       },
       "status": "Finished"
    }