使用ML Engine直接使用存储在Google BigQuery表上的数据

时间:2018-06-11 17:56:43

标签: google-bigquery google-cloud-ml

有没有办法直接使用Google BigQuery上的数据作为ML Engine支持的ML算法的列车/测试数据?

我在documents中看到的是使用存储在Google云端存储上的数据。

2 个答案:

答案 0 :(得分:2)

是的,这是可能的。有关详细指南,请参阅this blog post。 GitHub回购是here,但这是关键的要点。

<强> setup.py

from setuptools import setup

setup(name='trainer',
  version='1.0',
  description='Showing how to use private key',
  url='http://github.com/GoogleCloudPlatform/training-data-analyst',
  author='Google',
  author_email='nobody@google.com',
  license='Apache2',
  packages=['trainer'],
  package_data={'': ['privatekey.json']},
  install_requires=[
      'pandas-gbq==0.4.1',
      'urllib3',
      'google-cloud-bigquery'
  ],
  zip_safe=False)

<强> pkg_query.py

def query_to_dataframe(query):
  import pandas as pd
  import pkgutil
  privatekey = pkgutil.get_data('trainer', 'privatekey.json')
  print(privatekey[:200])
  return pd.read_gbq(query,
                 project_id='cloud-training-demos',
                 dialect='standard',
                 private_key=privatekey)

query = """
SELECT
  year,
  COUNT(1) as num_babies
FROM
  publicdata.samples.natality
WHERE
  year > 2000
GROUP BY
  year
"""

df = query_to_dataframe(query)
print(df.head())

答案 1 :(得分:1)

我认为托里提供了一个很好的答案。要添加,请查看Baby weight Example。因此,除了setup.py文件之外,您应该按照here中的描述修改model.py.

长话短说:

train_query, eval_query = create_queries()
train_df = query_to_dataframe(train_query)
eval_df = query_to_dataframe(eval_query)
train_x = input_fn(train_df)