es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Impala a través de JDBC: recuperar el número de particiones eliminadas.

Estoy eliminando múltiples particiones de una tabla Impala mediante

ALTER TABLE foobar DROP IF EXISTS PARTITION (pkey='foo' OR pkey='bar');

Cuando uso impala-shell se muestra un resultado indicando cuántas particiones realmente se eliminaron:

Starting Impala Shell without Kerberos authentication

<hr>

Bienvenido a la shell de Impala.
(Impala Shell v3.2.0-cdh6.3.2 (1bb9836) construido el Fri Nov  8 07:22:06 PST 2019)

El comando SET muestra el valor actual de todas las opciones de shell y consulta.

<hr>

Conexión TCP abierta con impala:21000
Conectado a impala:21000
Versión del servidor: impalad version 3.2.0-cdh6.3.2 RELEASE (build 1bb9836227301b839a32c6bc230e35439d5984ac)
[impala:21000] default> use my<em>schema;
Consulta: use my</em>schema
[impala:21000] my_schema> ALTER TABLE FOOBAR DROP IF EXISTS PARTITION (pkey='foo' OR pkey='bar');
Consulta: ALTER TABLE FOOBAR DROP IF EXISTS PARTITION (pkey='foo' OR pkey='bar')
+-------------------------+
| summary                 |
+-------------------------+
| Dropped 1 partition(s). |
+-------------------------+
Recuperado 1 fila(s) en 0.13s

Ahora, en nuestro código productivo, estamos utilizando solamente JDBC. Al ejecutar la misma instrucción DDL mediante JDBC, para mi Statement st tengo st.getResultSet() == null y st.getUpdateCount() == -1

¿Hay alguna forma de obtener el número de particiones eliminadas solo mediante JDBC?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, no es posible recuperar el número de particiones eliminadas a través de JDBC solo.

    La razón es que el comando ALTER TABLE en Impala no devuelve un conjunto de resultados que se pueda recuperar usando getResultSet(). En su lugar, devuelve un resumen de la operación que se imprime en la consola o el indicador de shell.

    Para recuperar el número de particiones eliminadas a través de JDBC, tendría que analizar la salida de la consola y extraer la información relevante. Esta no es una aproximación confiable ni recomendable, ya que el formato de la salida de la consola puede cambiar entre diferentes versiones de Impala o incluso entre diferentes ejecuciones del mismo comando.

    Alternativamente, podría intentar ejecutar el comando ALTER TABLE usando una API o herramienta diferente que admita recuperar la salida de resumen. Por ejemplo, podría usar la shell de Impala o el cliente de línea de comandos para ejecutar el comando y capturar la salida, o podría usar una API de nivel superior como el controlador JDBC de Impala o el conector JDBC de Cloudera que pueden proporcionar más funcionalidad para operaciones de DDL.

Comments are closed.