【发布时间】:2017-08-11 18:53:18
【问题描述】:
我正在尝试将千兆字节的数据从 Google Cloud Storage 或 Google BigQuery 加载到 pandas 数据帧中,以便我可以尝试运行 scikit 的 OneClassSVM 和 Isolation Forest(或任何其他一元或 PU 分类)。所以我尝试了pandas-gbq,但尝试运行
pd.read_gbq(query, 'my-super-project', dialect='standard')
导致我的机器在它仅完成 30% 时发出信号。而且我无法在本地加载它,而且我的机器没有足够的空间,而且听起来效率也不高。
我也试过
from google.cloud import storage
client = storage.Client()
bucket = client.get_bucket('bucket-id-here')
# Then do other things...
blob = bucket.get_blob('remote/path/to/file.txt')
print(blob.download_as_string())
我可以加载 1/10 或 1/5 的可用数据,但我的机器最终告诉我它内存不足。
TLDR:有没有一种方法可以让我在云端或某个遥远的超级计算机中运行我的自定义代码(使用 numpy、pandas 甚至 TensorFlow),在那里我可以轻松高效地从 Google 加载数据云存储还是 Google BigQuery?
【问题讨论】:
-
很遗憾,我找不到
read_gbq()函数,但是如果你在本地下载文件,你可以试试dask.dataframe,它在语法上类似于pandas,但执行的操作是--核心,所以内存应该不是问题。 -
@DavidDuffrin 我无法下载,因为我的机器没有足够的硬盘空间。
-
Cloud Dataflow 是一个选项吗?尝试将数据发送到 AWS 听起来不是一个好的解决方案。
-
数据有多大?如果它是 20GBs,你可以启动一个有很多内存的 GCE 机器并在那里下载它。如果是 1GB,则需要考虑将整个内容加载到内存中的不同选项(pandas 需要)
标签: python pandas google-bigquery google-cloud-storage sklearn-pandas