Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2023-07-28 GMT+08:00

Envío de una sentencia SQL

Función

Esta API se utiliza para enviar y ejecutar una sentencia SQL en un clúster MRS.

Restricciones

Ninguna

Depuración

Puede depurar esta API a través de la autenticación automática en API Explorer. API Explorer puede generar automáticamente código SDK de ejemplo y proporcionar la depuración de código SDK de ejemplo.

URI

  • Formato

    POST /v2/{project_id}/clusters/{cluster_id}/sql-execution

  • Descripción de parámetro
    Tabla 1 Parámetros de URI

    Parámetro

    Obligatorio

    Tipo

    Descripción

    project_id

    String

    El ID del proyecto. Para obtener más información sobre cómo obtener el ID del proyecto, consulte Obtención de un ID de proyecto.

    cluster_id

    String

    El ID del clúster. Para obtener más información acerca de cómo obtener el ID de clúster, consulte Obtención de un ID de clúster.

Parámetros de solicitud

Tabla 2 Parámetros de solicitud

Parámetro

Obligatorio

Tipo

Descripción

sql_type

String

El tipo SQL. Actualmente, solo se soporta el SQL del tipo presto.

NOTA:
  • El SQL del tipo presto solo se puede enviar y ejecutar en clústeres que contengan el componente Presto.
  • Este parámetro solo está disponible para clústeres MRS 2.0.6.1, 2.1.0.7, 3.1.2 o posteriores.

sql_content

String

La sentencia SQL que se va a ejecutar.

NOTA:

Actualmente, solo se puede ejecutar una única sentencia SQL a la vez, y la sentencia no puede contener un punto y coma (;).

database

No

String

La base de datos donde se encuentra la sentencia SQL que se va a ejecutar. El valor predeterminado es default.

archive_path

No

String

El directorio para almacenar los resultados de ejecución SQL volcados.

NOTA:

Sólo la sentencia SELECT volca los resultados de la consulta. Actualmente, los resultados de la consulta solo se pueden volcar a OBS.

Parámetros de respuesta

Código de estado: 200

Tabla 3 Parámetros de respuesta

Parámetro

Tipo

Descripción

id

String

ID de ejecución de una sentencia SQL. El ID sólo se genera cuando se ejecuta la sentencia SELECT, SHOW o DESC. Para otras operaciones, el ID está vacío.

message

String

El mensaje de error.

statement

String

La sentencia SQL que se va a ejecutar.

status

String

El estado de ejecución de una sentencia SQL. Valores posibles:

  • QUEUED
  • WAITING_FOR_RESOURCES
  • PLANNING
  • STARTING
  • RUNNING
  • FINISHING
  • FINISHED
  • FAILED

result_location

String

Ruta de acceso para archivar los resultados finales de la sentencia de consulta SQL.

NOTA:

Solo la sentencia SELECT volca los resultados de la ejecución de SQL a result_location.

content

Array<Array<String>>

Resultado de la ejecución de la sentencia SQL.

NOTA:

Solo las sentencias que no sean SELECT devuelven resultados en content. Si la sentencia SQL no devuelve resultados, content está vacío.

Código de estado: 400

Tabla 4 Parámetros de body de respuesta

Parámetro

Tipo

Descripción

error_code

String

El código de error.

error_msg

String

El mensaje de error.

Solicitud de ejemplo

Ejemplo de solicitud para enviar una sentencia SQL

POST https://{endpoint}/v2/{project_id}/clusters/{cluster_id}/sql-execution

{
  "sql_type" : "presto",
  "sql_content" : "show tables",
  "database" : "default",
  "archive_path" : "obs://my-bucket/path"
}

Ejemplo de respuesta

Código de estado: 200

La sentencia SQL se envía correctamente.

{
  "id" : "20190909_011820_00151_xxxxx",
  "statement" : "show tables",
  "status" : "FINISHED",
  "result_location" : " obs://my_bucket/uuid_date/xxxx.csv",
  "content" : [ [ "t1", null ], [ null, "t2" ], [ null, "t3" ] ]
}

Código de estado: 400

Error al enviar la sentencia SQL.

{
  "error_code" : "MRS.0011",
   "message": "Failed to submit SQL to the executor. The cluster ID is xxxx"
}

Códigos de estado

Consulte Códigos de estado.

Códigos de error

Consulte Códigos de error.