'ERROR - secure_channel() got an unexpected keyword argument 'default_scopes' with .to_dataframe() on bigquery object
Environment Details
- Python 3.7.12
- google-api-core 1.23.0
- google-auth 1.35.0
- bigquery 2.3.1
- let me know if i can provide any other library versions
We are querying some data from bigquery using python in airflow, and converting results into a dataframe. See this chunk of code:
from google.cloud import bigquery
bq = bigquery.Client()
query_result = bq.query(f"select count(*) as num_rows from our_project.ourdataset.our_table")
our_df = query_result.to_dataframe()
query_result
is a <google.cloud.bigquery.job.query.QueryJob object at
When we run the last line our_df = query_result.to_dataframe()
, we get the error TypeError: secure_channel() got an unexpected keyword argument 'default_scopes'
. The whole error message is:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.7/site-packages/google/cloud/bigquery/job/query.py", line 1313, in to_dataframe
date_as_object=date_as_object,
File "/usr/local/lib/python3.7/site-packages/google/cloud/bigquery/table.py", line 1695, in to_dataframe
create_bqstorage_client=create_bqstorage_client,
File "/usr/local/lib/python3.7/site-packages/google/cloud/bigquery/table.py", line 1510, in to_arrow
bqstorage_client = self.client._create_bqstorage_client()
File "/usr/local/lib/python3.7/site-packages/google/cloud/bigquery/client.py", line 446, in _create_bqstorage_client
return bigquery_storage.BigQueryReadClient(credentials=self._credentials)
File "/usr/local/lib/python3.7/site-packages/google/cloud/bigquery_storage_v1/services/big_query_read/client.py", line 386, in __init__
or Transport == type(self).get_transport_class("grpc_asyncio")
File "/usr/local/lib/python3.7/site-packages/google/cloud/bigquery_storage_v1/services/big_query_read/transports/grpc.py", line 170, in __init__
("grpc.max_receive_message_length", -1),
File "/usr/local/lib/python3.7/site-packages/google/cloud/bigquery_storage_v1/services/big_query_read/transports/grpc.py", line 221, in create_channel
**kwargs,
File "/usr/local/lib/python3.7/site-packages/google/api_core/grpc_helpers.py", line 286, in create_channel
return grpc_gcp.secure_channel(target, composite_credentials, **kwargs)
TypeError: secure_channel() got an unexpected keyword argument 'default_scopes'
This line of code was previously working for us. The only change I recall us making since the code was last working was:
- Installed
dbt==0.19.0
to.data_frame()
seems like the most basic python function there is, and it is quite frustrating that it is not working here for us. What can we do to resolve this?
Solution 1:[1]
I've found the issue, but I have no idea how to resolve. dbt-bigquery 0.19.0 depends on google-api-core<1.24 and >=1.16.0
When we installed dbt
, it must have changed the google-api-core
version from something greater, down to 1.23.0. However, google-api-core
being as low as 1.23 is now causing this other issue with to_dataframe()
. I know this because when I manually upgraded google-api-core
to 1.26, .to_dataframe()
was working again.
EDIT: upgrading dbt to 0.20.0 allows for google-api-core 1.3+, which resolves our issue!
Solution 2:[2]
For me upgrading google-auth
, google-auth-httplib2
, and google-api-core
did the trick.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | richardec |