我尝试了两种方法将谷歌BigQuery中的大表(大约50,000,000行18GB)导入到Google Datalab的数据框中,以便执行机器学习使用Tensorflow。无法将大数据作为数据框从Google BigQuery导入Google Cloud DataLab
首先我使用(需要所有模块均采用进口):
data = bq.Query('SELECT {ABOUT_30_COLUMNS...} FROM `TABLE_NAME`').execute().result().to_dataframe()
然后保持Running...
直到永远。 即使我做LIMIT 1000000
,它不会改变。
其次我用:
data = pd.read_gbq(query='SELECT {ABOUT_30_COLUMNS...} FROM `TABLE_NAME` LIMIT 1000000', dialect ='standard', project_id='PROJECT_ID')
它起初运行良好,但是当它进入到45万行(计算采用率和总的行数)时,它会停留在:
Got page: 32; 45.0% done. Elapsed 293.1 s.
而我找不到如何在read_gbq()中启用allowLargeResults。 作为其document说,我尝试:
data = pd.read_gbq(query='SELECT {ABOUT_30_COLUMNS...} FROM `TABLE_NAME` LIMIT 1000000', dialect ='standard', project_id='PROJECT_ID', configuration = {'query': {'allowLargeResult': True}})
然后我得到:
read_gbq() got an unexpected keyword argument 'configuration'
那怎么我甚至未能导入1,000,000行到谷歌云Datalab。 我其实想要导入数据大小的50倍。
有什么想法吗?
感谢
我不知道这将是更好地使用datalab更像是快速分析和与采样数据见地勘探笔记本,而不是把一次500亿行。处理这么大量的数据需要我想象的一些集群结构,我不确定datalab是否能够处理或扩展来处理它(例如,先处理采样数据,找到问题的正确模型,然后使用一些集群处理整个数据)。 –
@我同意。这绝对是用户应该思考的问题。请随时提交您的评论作为一个单独的答案。另外,如果需要所有行进行分析,那么潜在用户可以删除不必要的列以减少总体数据集大小。 –
我宁愿你用这些信息更新你的答案:),它已经足够好了,也许它只是需要警告OP处理抽样数据的方法,然后将模型和结论提交给一个集群进行进一步处理。 –