Zeppelin con BigQuery resulta en “¡La ejecución de SQL ha devuelto un error!”
Instalé y configuré Zeppelin según lo indica el documento.
- Establecí GOOGLE_APPLICATION_CREDENTIALS como variable de entorno en conf/zeppelin-env.sh
export GOOGLE_APPLICATION_CREDENTIALS=/home/anderson/.ssh/gcp-credentials.json
- 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)
davy.ai
Posible solución para el intérprete de BigQuery en Apache Zeppelin que no funciona con un conjunto de datos privado:
google-cloud-bigquery
está instalada en el sistema donde está instalado Zeppelin.Si no está instalada, instálela ejecutando:
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.
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.Intente establecer explícitamente la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
antes de ejecutar la consulta de BigQuery en Zeppelin.Si el problema persiste, comuníquese con el soporte de Google Cloud para obtener más ayuda.