如何在我的本地 linux 服务器上运行 google-cloud-datalab?
Posted
技术标签:
【中文标题】如何在我的本地 linux 服务器上运行 google-cloud-datalab?【英文标题】:How to run google-cloud-datalab on my local linux server? 【发布时间】:2015-10-26 07:43:38 【问题描述】:我已在 Google Developers Console 上注册,但我的项目不是计费项目。我做了“初始化环境”的步骤。和“构建并运行 ”正如网页 https://github.com/GoogleCloudPlatform/datalab/wiki/Development-Environment 和 https://github.com/GoogleCloudPlatform/datalab/wiki/Build-and-Run 所描述的那样。 但是当我在本地 linux 服务器上部署的 Notebook 中运行代码时,我遇到了以下错误:
创建并运行 SQL 查询
bq.Query('SELECT * FROM [cloud-datalab-samples:httplogs.logs_20140615] LIMIT 3').results()
异常回溯(最近一次调用最后一次) 在 () 1 # 创建并运行 SQL 查询 ----> 2 bq.Query('SELECT * FROM [cloud-datalab-samples:httplogs.logs_20140615] LIMIT 3').results()
/usr/local/lib/python2.7/dist-packages/gcp/bigquery/_query.pyc 结果(self,use_cache) 130 """ 131 如果不是 use_cache 或(self._results 为 None): --> 132 self.execute(use_cache=use_cache) 第133章 134
/usr/local/lib/python2.7/dist-packages/gcp/bigquery/_query.pyc 在执行(self,table_name,table_mode,use_cache,priority,allow_large_results) 第343章 第344章 --> 345 优先级=优先级,allow_large_results=allow_large_results) 第346章 第347章
/usr/local/lib/python2.7/dist-packages/gcp/bigquery/_query.pyc in execute_async(self, table_name, table_mode, use_cache, priority, allow_large_results) 第307章 308 例外为 e: --> 309 提高 e 310 如果 'jobReference' 不在 query_result 中: 311引发异常('意外的查询响应。')
异常:发送 HTTP 请求失败。 一步一步,我找到了抛出异常的地方: 如果标题为无: 标头 =
headers['user-agent'] = 'GoogleCloudDataLab/1.0'
# Add querystring to the URL if there are any arguments.
if args is not None:
qs = urllib.urlencode(args)
url = url + '?' + qs
# Setup method to POST if unspecified, and appropriate request headers
# if there is data to be sent within the request.
if data is not None:
if method is None:
method = 'POST'
if data != '':
# If there is a content type specified, use it (and the data) as-is.
# Otherwise, assume JSON, and serialize the data object.
if 'Content-Type' not in headers:
data = json.dumps(data)
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = str(len(data))
else:
if method == 'POST':
headers['Content-Length'] = '0'
# If the method is still unset, i.e. it was unspecified, and there
# was no data to be POSTed, then default to GET request.
if method is None:
method = 'GET'
# Create an Http object to issue requests. Associate the credentials
# with it if specified to perform authorization.
#
# TODO(nikhilko):
# SSL cert validation seemingly fails, and workarounds are not amenable
# to implementing in library code. So configure the Http object to skip
# doing so, in the interim.
http = httplib2.Http()
http.disable_ssl_certificate_validation = True
if credentials is not None:
http = credentials.authorize(http)
try:
response, content = http.request(url,method=method,body=data,headers=headers)
if 200 <= response.status < 300:
if raw_response:
return content
return json.loads(content)
else:
raise RequestException(response.status, content)
except ValueError:
raise Exception('Failed to process HTTP response.')
except httplib2.HttpLib2Error:
raise Exception('Failed to send HTTP request.')
不知道是我的配置错误还是云数据实验室不支持本地部署和运行。也就是说,我们无法在本地数据实验室服务器上运行笔记本中的代码。 请给我一些想法。这个问题困扰了我一个星期!谢谢!
【问题讨论】:
【参考方案1】:如果您希望在本地运行 Datalab 容器,而不是在 Google Cloud 中运行,也可以按照此处所述: https://github.com/GoogleCloudPlatform/datalab/wiki/Build-and-Run
但是,这是用于构建/更改 Datalab 代码的开发人员设置,目前不适合希望将 Datalab 用作工具的数据科学家/开发人员。 IE。与仅将 Datalab 部署到支持计费的云项目相比,它的设置更加复杂。即使使用本地运行的容器,您也可能希望有一个 Google Cloud 项目来运行 BigQuery 查询等
【讨论】:
【参考方案2】:如果您的项目未启用结算功能,则您无法针对 BigQuery 运行查询,这看起来就是您正在尝试做的事情。
【讨论】:
【参考方案3】:按照标题为 Run Cloud Datalab locally 的快速入门指南中的步骤,在本地运行 datalab,而无需设置 datalab 开发环境。
【讨论】:
以上是关于如何在我的本地 linux 服务器上运行 google-cloud-datalab?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 aws ec2(linux 实例)上部署 Next js