Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting GOOGLE_APPLICATION_CREDENTIALS for BigQuery Python CLI

I'm trying to connect to Google BigQuery through the BigQuery API, using Python.

I'm following this page here: https://cloud.google.com/bigquery/bigquery-api-quickstart

My code is as follows:

import os import argparse  from apiclient.discovery import build from apiclient.errors import HttpError from oauth2client.client import GoogleCredentials  GOOGLE_APPLICATION_CREDENTIALS = './Peepl-cb1dac99bdc0.json'  def main(project_id):     # Grab the application's default credentials from the environment.     credentials = GoogleCredentials.get_application_default()     print(credentials)     # Construct the service object for interacting with the BigQuery API.     bigquery_service = build('bigquery', 'v2', credentials=credentials)      try:         query_request = bigquery_service.jobs()         query_data = {             'query': (                 'SELECT TOP(corpus, 10) as title, '                 'COUNT(*) as unique_words '                 'FROM [publicdata:samples.shakespeare];')         }          query_response = query_request.query(             projectId=project_id,             body=query_data).execute()          print('Query Results:')         for row in query_response['rows']:             print('\t'.join(field['v'] for field in row['f']))      except HttpError as err:         print('Error: {}'.format(err.content))         raise err   if __name__ == '__main__':     parser = argparse.ArgumentParser(         description=__doc__,         formatter_class=argparse.RawDescriptionHelpFormatter)     parser.add_argument('project_id', help='Your Google Cloud Project ID.')      args = parser.parse_args()      main(args.project_id) 

However, when I run this code through the terminal, I get the following error:

oauth2client.client.ApplicationDefaultCredentialsError: The Application Default Credentials are not available. They are available if running in Google Compute Engine. Otherwise, the environment variable GOOGLE_APPLICATION_CREDENTIALS must be defined pointing to a file defining the credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information. 

As you can see in the code, I've tried to set the GOOGLE_APPLICATION_CREDENTIALS as per the link in the error. However, the error persists. Does anyone know what the issue is?

Thank you in advance.

like image 592
Colin Ricardo Avatar asked Feb 02 '16 17:02

Colin Ricardo


2 Answers

First - Thanks for the code - this provided to be very useful. I would also suggest adding setting the environmental variable directly in your code - as not to set it for every environment you work on. you can use the following code:

import os os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "path_to_your_.json_credential_file" 

I found this useful when switching between different projects that require different credentials.

like image 199
Roee Anuar Avatar answered Sep 27 '22 21:09

Roee Anuar


I'm not sure about BigQuery, but i'm using Google Data Store for saving. If you've installed gcloud sdk in your mac, you can try running this command

gcloud auth application-default login 
like image 41
arthankamal Avatar answered Sep 27 '22 20:09

arthankamal