gpt4 book ai didi

python - 使用 Pandas 从 Cloud DataLab 访问 Big Query

转载 作者:太空狗 更新时间:2023-10-30 00:54:27 25 4
gpt4 key购买 nike

我有一个 Jypyter Notebook 使用 Pandas 作为工具来访问 Big Query:

df = pd.io.gbq.read_gbq( query, project_id = 'xxxxxxx-xxxx' )

这在我的本地机器上运行良好! (太好了,事实上!)但是当我将同一个笔记本加载到 Cloud DataLab 时,我得到:

DistributionNotFound: google-api-python-client

这看起来相当令人失望!我相信该模块应该与 Pandas 一起安装..但不知何故谷歌不包括它?出于多种原因,最好不必将代码从我们在本地机器上开发的代码更改为 Cloud DataLab 中所需的代码,在这种情况下,我们大量参数化数据访问...

好的,我跑了:

!pip install --upgrade google-api-python-client

现在,当我运行 notebook 时,我收到无法解析的身份验证提示,因为 DataLab 在远程机器上:

Your browser has been opened to visit:
>>> Browser string>>>>
If your browser is on a different machine then exit and re-run this
application with the command-line parameter

--noauth_local_webserver

没有看到明显的答案吗?

更新笔记本中的 google-api-python-client 后,我​​在同一笔记本中使用@Anthonios Partheniou 下面建议的代码(在单元 block 中执行)我得到了以下回溯:

TypeError                                 Traceback (most recent call last)
<ipython-input-3-038366843e56> in <module>()
5 scope='https://www.googleapis.com/auth/bigquery',
6 redirect_uri='urn:ietf:wg:oauth:2.0:oob')
----> 7 storage = Storage('bigquery_credentials.dat')
8 authorize_url = flow.step1_get_authorize_url()
9 print 'Go to the following link in your browser: ' + authorize_url

/usr/local/lib/python2.7/dist-packages/oauth2client/file.pyc in __init__(self, filename)
37
38 def __init__(self, filename):
---> 39 super(Storage, self).__init__(lock=threading.Lock())
40 self._filename = filename
41

TypeError: object.__init__() takes no parameters

他提到需要从同一文件夹执行笔记本,但我知道执行数据实验室笔记本的唯一方法是通过存储库?

虽然使用新的 Jupyter Datalab 模块的新模块是一个可能的替代方案,但在本地和 DataLab 实例上使用完整的 Pandas BQ 接口(interface)不变的能力将非常有帮助!所以请用我的手指寻找解决方案!

pip installed:
GCPDataLab 0.1.0
GCPData 0.1.0
wheel 0.29.0
tensorflow 0.6.0
protobuf 3.0.0a3
oauth2client 1.4.12
futures 3.0.3
pexpect 4.0.1
terminado 0.6
pyasn1 0.1.9
jsonschema 2.5.1
mistune 0.7.2
statsmodels 0.6.1
path.py 8.1.2
ipython 4.1.2
nose 1.3.7
MarkupSafe 0.23
py-dateutil 2.2
pyparsing 2.1.1
pickleshare 0.6
pandas 0.18.0
singledispatch 3.4.0.3
PyYAML 3.11
nbformat 4.0.1
certifi 2016.2.28
notebook 4.0.2
cycler 0.10.0
scipy 0.17.0
ipython-genutils 0.1.0
pyasn1-modules 0.0.8
functools32 3.2.3-2
ipykernel 4.3.1
pandocfilters 1.2.4
decorator 4.0.9
jupyter-core 4.1.0
rsa 3.4.2
mock 1.3.0
httplib2 0.9.2
pytz 2016.3
sympy 0.7.6
numpy 1.11.0
seaborn 0.6.0
pbr 1.8.1
backports.ssl-match-hostname 3.5.0.1
ggplot 0.6.5
simplegeneric 0.8.1
ptyprocess 0.5.1
funcsigs 0.4
scikit-learn 0.16.1
traitlets 4.2.1
jupyter-client 4.2.2
nbconvert 4.1.0
matplotlib 1.5.1
patsy 0.4.1
tornado 4.3
python-dateutil 2.5.2
Jinja2 2.8
backports-abc 0.4
brewer2mpl 1.4.1
Pygments 2.1.3

结束

最佳答案

pandas 中的 Google BigQuery 身份验证通常很简单,除非在远程服务器上执行 pandas 代码。例如,在云端的 Datalab 上运行 pandas。在这种情况下,请使用以下代码创建 pandas 访问 Google Datalab 中的 Google BigQuery 所需的凭据文件。

from oauth2client.client import OAuth2WebServerFlow
from oauth2client.file import Storage
flow = OAuth2WebServerFlow(client_id='<Client ID from Google API Console>',
client_secret='<Client secret from Google API Console>',
scope='https://www.googleapis.com/auth/bigquery',
redirect_uri='urn:ietf:wg:oauth:2.0:oob')
storage = Storage('bigquery_credentials.dat')
authorize_url = flow.step1_get_authorize_url()
print 'Go to the following link in your browser: ' + authorize_url
code = raw_input('Enter verification code: ')
credentials = flow.step2_exchange(code)
storage.put(credentials)

完成该过程后,我预计您不会看到错误(只要笔记本与新创建的 'bigquery_credentials.dat' 文件位于同一文件夹中)。

您还需要安装 google-api-python-client python 包原样required by pandas用于 Google BigQuery 支持。您可以在笔记本中运行以下任一程序来安装它。

要么

!pip install google-api-python-client --no-deps
!pip install uritemplate --no-deps
!pip install simplejson --no-deps

%%bash
pip install google-api-python-client --no-deps
pip install uritemplate --no-deps
pip install simplejson --no-deps

--no-deps需要选项,这样您就不会意外更新默认安装在数据实验室中的 python 包(以确保数据实验室的其他部分不会中断)。

注意:有了 pandas 0.19.0(尚未发布),在 Google Cloud Datalab 中使用 pandas 会容易得多。参见 Pull Request #13608

注意:您还可以选择在 jupyter 中使用(新的)google datalab 模块(这样代码也可以在云端的 Google Datalab 中运行)。请参阅以下相关堆栈溢出答案: How do I use gcp package from outside of google datalabs?

关于python - 使用 Pandas 从 Cloud DataLab 访问 Big Query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37792709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com