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.

Zeppelin con BigQuery resulta en “¡La ejecución de SQL ha devuelto un error!”

Instalé y configuré Zeppelin según lo indica el documento.

  1. Establecí GOOGLE_APPLICATION_CREDENTIALS como variable de entorno en conf/zeppelin-env.sh


export GOOGLE_APPLICATION_CREDENTIALS=/home/anderson/.ssh/gcp-credentials.json

  1. Configuré el intérprete de BigQuery estableciendo zeppelin.bigquery.project_id.

Después de estas configuraciones, pude ejecutar la siguiente consulta SQL de BigQuery para un conjunto de datos público sin ningún problema.

%bigquery

<h1>standardSQL</h1>

SELECT departure_airport, count(case when departure_delay > 0 then 1 else 0 end) as no_of_delays 
FROM bigquery-samples.airline_ontime_data.flights
group by departure_airport
order by 2 desc
limit 10

Funciona. Pero cuando intento conectarme a un conjunto de datos privado, no funciona.

Por ejemplo…

%bigquery

<h1>standardSQL</h1>

SELECT id FROM private_project_id.dataset.table limit 1

Devuelve ¡La ejecución SQL devolvió un error! ¡ERROR!

Intenté hacer lo mismo en Python.
y… funciona.

%python
from google.cloud import bigquery

client = bigquery.Client()

<h1>Realizar una consulta.</h1>

QUERY = ('SELECT id FROM private_project_id.dataset.bra_survey limit 1')
query_job = client.query(QUERY)  # Petición API
rows = query_job.result()  # Espera el resultado de la consulta

for row in rows:
   print(row)

Como experimento, cambié el nombre del archivo gcp-credentials.json a algo como gcp-credentials.json__backup para probar si el intérprete de BigQuery de Zeppelin realmente lee las credenciales. Sorprendentemente, cuando ejecuté la consulta de BigQuery, no hubo mensaje de error, excepto el mismo mensaje de error ¡La ejecución SQL devolvió un error!.
Quiero decir, si el intérprete realmente leyera el archivo de credenciales, esperaría que se produjera una excepción por algo como un error de no se pueden encontrar las credenciales.

¿Cómo solucionar este problema?
¿Soy el único que sufre este error?

Sí, los conjuntos de datos públicos funcionan bien.
El problema es conectarse al conjunto de datos privado en BigQuery.
Y en Python no hubo ningún problema para obtener datos del conjunto de datos privado.
(Lo que quiero decir es que los permisos de la cuenta de servicio no son un problema. Utilizo esta cuenta de servicio en varias aplicaciones sin problemas)

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Posible solución para el intérprete de BigQuery en Apache Zeppelin que no funciona con un conjunto de datos privado:

    1. Verifique si la biblioteca google-cloud-bigquery está instalada en el sistema donde está instalado Zeppelin.
    pip freeze | grep google-cloud-bigquery 
    

    Si no está instalada, instálela ejecutando:

    pip install google-cloud-bigquery 
    
    1. Verifique si las credenciales de la cuenta de servicio utilizadas en Zeppelin (archivo gcp-credentials.json) tienen los permisos necesarios para acceder al conjunto de datos privado.

    Para verificar esto, intente ejecutar la consulta en Python con las mismas credenciales utilizadas en Zeppelin. Si funciona, entonces los permisos de la cuenta de servicio no son el problema.

    1. Asegúrese de que la configuración zeppelin.bigquery.project_id esté correctamente configurada en Zeppelin para que coincida con la ID del proyecto de Google Cloud donde se encuentra el conjunto de datos privado.
    2. Intente establecer explícitamente la variable de entorno GOOGLE_APPLICATION_CREDENTIALS antes de ejecutar la consulta de BigQuery en Zeppelin.

    %env GOOGLE_APPLICATION_CREDENTIALS=/ruta/a/gcp-credentials.json 
    
    1. Si ninguna de las soluciones anteriores funciona, intente crear una nueva cuenta de servicio con los permisos necesarios para acceder al conjunto de datos privado y utilice sus credenciales en Zeppelin.

    Si el problema persiste, comuníquese con el soporte de Google Cloud para obtener más ayuda.

Comments are closed.