Как запустить google-cloud-datalab на моем локальном сервере Linux?

Я зарегистрировался в консоли разработчиков Google, но мой проект не является платным. Я выполнил шаги "инициализированная среда" и "Построить и запустить" в виде веб-страниц https://github.com/GoogleCloudPlatform/datalab/wiki/Development-Environment и https://github.com/GoogleCloudPlatform/datalab/wiki/Build-and-Run описывают. Но когда я запускаю код в Notebook, развернутом на моем локальном сервере Linux, я сталкиваюсь со следующей ошибкой:

Создать и запустить запрос 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'). ()

/usr/local/lib/python2.7/dist-packages/gcp/bigquery/_query.pyc в результатах (self, use_cache) 130 """ 131, если не use_cache или (self._results отсутствует): -> 132 self.execute(use_cache=use_cache) 133 возвращает self._results.results 134

/usr/local/lib/python2.7/dist-packages/gcp/bigquery/_query.pyc в execute(self, table_name, table_mode, use_cache, priority, allow_large_results) 343 """ 344 job = self.execute_async(table_name=table_name, table_mode=table_mode, use_cache=use_cache, -> 345 приоритет = приоритет, allow_large_results=allow_large_results) 346 self._results = job.wait() 347 вернуть self._results

/usr/local/lib/python2.7/dist-packages/gcp/bigquery/_query.pyc в execute_async(self, table_name, table_mode, use_cache, priority, allow_large_results) 307 allow_large_results=allow_large_results) 308 за исключением исключения как e: > 309 повысить e 310, если 'jobReference' отсутствует в query_result: 311 повысить Exception('неожиданный ответ на запрос.')

Исключение: не удалось отправить HTTP-запрос. Шаг за шагом я нахожу место, которое выдает исключение: если заголовки - None: headers = {}

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.')

Интересно, это моя ошибка конфигурации или облачная база данных не поддерживает развертывание и запуск локально. То есть, мы не можем запускать код в записных книжках на локальном сервере данных. Пожалуйста, дайте мне несколько идей. Вопрос беспокоил меня в течение одной недели! Спасибо!

3 ответа

Если вы хотите запустить контейнер Datalab локально, а не в Google Cloud, это также возможно, как описано здесь: https://github.com/GoogleCloudPlatform/datalab/wiki/Build-and-Run

Однако это настройка разработчика для создания / изменения кода Datalab, и в настоящее время она не предназначена для ученого / разработчика данных, который хочет использовать Datalab в качестве инструмента. То есть его сложнее настроить по сравнению с простым развертыванием Datalab в облачном проекте с поддержкой биллинга. Даже с локально работающим контейнером вам, вероятно, понадобится проект Google Cloud для выполнения запросов BigQuery и т. Д.

Если в вашем проекте нет биллинга, вы не можете выполнять запросы к BigQuery, как вы и пытаетесь сделать.

Следуйте инструкциям в руководстве по быстрому запуску под названием " Запускать Cloud Datalab локально", чтобы локально запускать datalab без настройки среды разработки datalab.

Другие вопросы по тегам