Referencia de api rest de Databricks

Azure Databricks Data Science Engineering y Databricks Machine Learning tienen tres API REST que realizan tareas & diferentes: &2.0y 1.2. Para la administración general, use las API 2.1 y 2.0. API 1.2 permite ejecutar comandos directamente en Azure Databricks.

Importante

Para acceder a las API REST de Databricks, es preciso autenticarse.

En esta sección se incluyen guías de referencia para las API REST que se usan al trabajar con los entornos data science engineering y & databricks Machine Learning databricks. También puede ir directamente a las páginas principales de la API REST para la versión más reciente o para las versiones 2.1,2.0o 1.2. Las API REST de Databricks SQL se incluyen en la guía de Databricks SQL en la referencia de Databricks SQL API. Databricks Machine Learning también proporciona una API de Python para Feature Store; consulte Api de Python del Almacén de características de Databricks.

API existentes

Authentication

Para obtener información sobre la autenticación en la API REST mediante tokens de acceso personal, consulte Autenticación mediante tokens de acceso personal de Azure Databricks.

Para obtener información sobre la autenticación en la API REST mediante tokens de Azure Active Directory, consulte Autenticación mediante tokens de Azure Active Directory. Para obtener ejemplos, consulte Uso de un token de acceso de Azure AD para un usuario y Uso de un token de acceso de Azure AD para una entidad de servicio.

Para obtener ejemplos de API, vea Ejemplos de API.

Límites de frecuencia

Para garantizar una servicio de alta calidad cuando hay mucha carga, Databricks hace cumplir los límites de velocidad en todas las llamadas de la API REST. Los límites se establecen por punto de conexión y por área de trabajo, con el fin de garantizar que el uso es uso justo y que hay una alta disponibilidad. Para solicitar un aumento del límite, póngase en contacto con su representante de Databricks.

Las solicitudes que superan el límite de frecuencia devuelven un código de estado de respuesta 429.

Análisis de la salida

Puede ser útil analizar las distintas partes de la salida JSON. Databricks recomienda la utilidad jq para analizar código JSON. Puede instalar en jq Linux a través de jqen macOS mediante Homebrew con o Windows brew install jq mediante Chocolatey con choco install jq . Para obtener más información sobre jq , vea el manual de jq.

En este ejemplo se enumeran los nombres y los identificadores de los clústeres disponibles en el área de trabajo especificada. En este ejemplo se usa un archivo .netrc.

curl --netrc -X GET https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/list \
| jq '[ .clusters[] | { id: .cluster_id, name: .cluster_name } ]'
[
  {
    "id": "1234-567890-batch123",
    "name": "My Cluster 1"
  },
  {
    "id": "2345-678901-rigs234",
    "name": "My Cluster 2"
  }
]

Compatibilidad

Las respuestas para la misma versión de API no quitarán ningún campo de la salida JSON. Sin embargo, la API podría agregar nuevos campos a la salida JSON sin incrementar la versión de la API. Los flujos de trabajo de programación deben tener en cuenta estas adiciones y omitir los campos desconocidos.

Algunos campos de STRING (que contienen mensajes de error y descriptivos destinados a usarse en la interfaz de usuario) no están estructurados y no debería depender del formato de estos campos en sus flujos de trabajo de programación.

Uso de curl para invocar a la API REST de Databricks

curl es una herramienta popular para transferir datos hacia y desde servidores. En esta sección se proporciona información específica sobre el uso de curl para invocar a la API REST de Databricks.

Invocación de una instrucción GET mediante una cadena de consulta

Aunque la mayoría de las llamadas de API requieren que especifique un cuerpo JSON, para las llamadas GET puede especificar una cadena de consulta mediante su anexión después del símbolo ? y rodeando la dirección URL entre comillas. Si usa , puede especificar (o ) y (o ) junto con la cadena de consulta; no es necesario rodear la dirección URL o la cadena de consulta curl--get entre -G--data-d comillas.

En los ejemplos siguientes, reemplace por la dirección URL del área adb-1234567890123456.7.azuredatabricks.netadb-1234567890123456.7.azuredatabricks.net trabajo de la Azure Databricks implementación. Debe empezar por adb-. No use la dirección URL regional en desuso que comienza por <azure-region-name>. Es posible que no funcione en las nuevas áreas de trabajo, que sea menos confiable y que muestre un rendimiento inferior al de las direcciones URL por área de trabajo.

En este ejemplo, se imprime información sobre el clúster especificado. En este ejemplo se usa un archivo .netrc.

Usar ?:

curl --netrc 'https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/get?cluster_id=1234-567890-patch123'

Mediante --get y --data:

curl --netrc --get \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/get \
--data cluster_id=1234-567890-batch123
{
  "cluster_id": "1234-567890-batch123",
  "driver": {
    "node_id": "123ab456789012345cd67e8e90123f45",
    "instance_id": "234ab456789012345cd67e8e90123f45",
    "start_timestamp": 1618448261567,
    "host_private_ip": "10.0.0.0",
    "private_ip": "10.0.0.0"
  },
  ...
}

En este ejemplo se enumera el contenido de la raíz de DBFS. En este ejemplo se usa un archivo .netrc.

curl --netrc --get \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/dbfs/list \
--data path=/
"files": [
  {
    "path": "/tmp",
    "is_dir": true,
    "file_size": 0,
    "modification_time": 1547078156000
  },
  {
    "path": "/my_file.txt",
    "is_dir": false,
    "file_size": 40,
    "modification_time": 1541374426000
  },
  ...
]

Uso de Python para invocar a la API REST de Databricks

requests es una biblioteca popular para realizar solicitudes HTTP en Python. En este ejemplo, se usa la biblioteca requests para mostrar información sobre el clúster de Azure Databricks especificado. En este ejemplo se usa un archivo .netrc.

import requests
import json

instance_id = 'adb-1234567890123456.7.azuredatabricks.net'

api_version = '/api/2.0'
api_command = '/clusters/get'
url = f"https://{instance_id}{api_version}{api_command}"

params = {
  'cluster_id': '1234-567890-batch123'
}

response = requests.get(
  url = url,
  params = params
)

print(json.dumps(json.loads(response.text), indent = 2))
{
  "cluster_id": "1234-567890-batch123",
  "driver": {
    ...
  },
  "spark_context_id": 1234567890123456789,
  ...
}

Uso de PowerShell para invocar a la API REST de Databricks

En este ejemplo, se usa el cmdlet Invoke-RestMethod de PowerShell para mostrar información sobre el clúster de Azure Databricks especificado.

$Token = 'dapia1b2345678901c23456defa7bcde8fa9'
$ConvertedToken = $Token | ConvertTo-SecureString -AsPlainText -Force

$InstanceID = 'adb-1234567890123456.7.azuredatabricks.net'
$APIVersion = '/api/2.0'
$APICommand = '/clusters/get'
$Uri = "https://$InstanceID$APIVersion$APICommand"

$Body = @{
  'cluster_id' = '1234-567890-batch123'
}

$Response = Invoke-RestMethod `
  -Authentication Bearer `
  -Token $ConvertedToken `
  -Method Get `
  -Uri  $Uri `
  -Body $Body

Write-Output $Response
cluster_id       : 1234-567890-batch123
driver           : ...
spark_context_id : 1234567890123456789
...

Cadenas de la versión del runtime

Muchas llamadas API requieren que se especifique una cadena de la versión del runtime de Databricks. En esta sección se describe la estructura de una cadena de versión en la API REST de Databricks.

<M>.<F>.x[-cpu][-esr][-gpu][-ml][-photon][-hls]-scala<scala-version>

, donde

  • M: versión principal de Databricks Runtime
  • F: versión de actualización de características de Databricks Runtime
  • cpu: versión de CPU (solo con -ml)
  • esr: soporte extendido
  • gpu: gpu
  • ml: ml
  • photon: photon
  • hls: hls (en desuso)
  • scala-version: versión de Scala utilizada para compilar Spark: 2.10, 2.11 o 2.12

Por ejemplo:

  • 7.6.x-gpu-ml-scala2.12 representa Databricks Runtime 7.6 para Machine Learning, está habilitada para GPU y usa la versión 2.12 de Scala para compilar la versión 3.0.1 de Spark
  • 6.4.x-esr-scala2.11 representa el soporte extendido de Databricks Runtime 6.4 y usa la versión 2.11 de Scala para compilar la versión 2.4.5 de Spark

Las tablas con la programación de soporte técnico y las versiones de Databricks Runtime compatibles, y las versiones no compatibles asignan versiones de Databricks Runtime a la versión de Spark que se encuentra en el runtime.

Para obtener una lista de las cadenas de la versión del runtime de Azure Databricks disponibles, llame a Runtime versions API.

Databricks Light

apache-spark.<M>.<F>.x-scala<scala-version>

, donde

  • M: versión principal de Apache Spark
  • F: versión de actualización de características de Apache Spark
  • scala-version: versión de Scala utilizada para compilar Spark: 2.10 o 2.11

Por ejemplo, apache-spark-2.4.x-scala2.11.