我通过SSH登录到GCE实例.从那里我想借助服务帐户访问存储:
GCE> gcloud auth list
Credentialed accounts:
- 1234567890-compute@developer.gserviceaccount.com (active)
Run Code Online (Sandbox Code Playgroud)
我首先确保此服务帐户在我正在处理的项目的权限中被标记为"可以编辑".我还确保在存储桶上写入ACL,我希望他复制文件:
local> gsutil acl ch -u 1234567890-compute@developer.gserviceaccount.com:W gs://mybucket
Run Code Online (Sandbox Code Playgroud)
但是以下命令失败:
GCE> gsutil cp test.txt gs://mybucket/logs
Run Code Online (Sandbox Code Playgroud)
(我还确保在"mybucket"下创建"logs").
我得到的错误信息是:
Copying file://test.txt [Content-Type=text/plain]...
AccessDeniedException: 403 Insufficient Permission 0 B
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我正在尝试pandas.DataFrame使用此处pandas.DataFrame.to_gbq()记录的功能上传到Google大查询.问题是,直接上传到Google云端存储GUI需要不到一分钟的时间需要2.3分钟.我正计划上传一堆数据帧(~32),每个数据帧都有相似的大小,所以我想知道它是什么更快的选择.to_gbq()
这是我正在使用的脚本:
dataframe.to_gbq('my_dataset.my_table',
'my_project_id',
chunksize=None, # i've tryed with several chunksizes, it runs faster when is one big chunk (at least for me)
if_exists='append',
verbose=False
)
dataframe.to_csv(str(month) + '_file.csv') # the file size its 37.3 MB, this takes almost 2 seconds
# manually upload the file into GCS GUI
print(dataframe.shape)
(363364, 21)
Run Code Online (Sandbox Code Playgroud)
我的问题是,什么更快?
Dataframe使用pandas.DataFrame.to_gbq()功能上传Dataframe为csv,然后使用Python API作为文件上传到BigQueryDataframe为csv,然后使用此过程将文件上载到Google Cloud Storage ,然后从BigQuery中读取它更新:
替代方案2,使用pd.DataFrame.to_csv() …
python pandas google-cloud-storage google-bigquery google-cloud-python
我想将 Pandas 数据框直接保存到 Google Cloud Storage。我使用write-a-pandas-dataframe-to-google-cloud-storage-or-bigquery尝试了不同的方法。但我无法保存。
注意:我只能使用 google.cloud 包
下面是我试过的代码
from google.cloud import storage
import pandas as pd
input_dict = [{'Name': 'A', 'Id': 100}, {'Name': 'B', 'Id': 110}, {'Name': 'C', 'Id': 120}]
df = pd.DataFrame(input_dict)
Run Code Online (Sandbox Code Playgroud)
尝试:1
destination = f'gs://bucket_name/test.csv'
df.to_csv(destination)
Run Code Online (Sandbox Code Playgroud)
尝试:2
storage_client = storage.Client(project='project')
bucket = storage_client.get_bucket('bucket_name')
gs_file = bucket.blob('test.csv')
df.to_csv(gs_file)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
对于选项 1:没有这样的文件或目录:'gs://bucket_name/test.csv'
选项 2:'Blob' 对象没有属性 'close'
谢谢,
拉古纳特。
我想知道将 Google BigQuery 表查询结果存储到 Google Cloud 存储的最佳方式是什么。我的代码目前正在一些 Jupyter Notebook 中运行(在 Vertex AI Workbench 中,与 BigQuery 数据源以及 Cloud Storage 目标相同的项目),如下所示:
# CELL 1 OF 2
from google.cloud import bigquery
bqclient = bigquery.Client()
# The query string can vary:
query_string = """
SELECT *
FROM `my_project-name.my_db.my_table`
LIMIT 2000000
"""
dataframe = (
bqclient.query(query_string)
.result()
.to_dataframe(
create_bqstorage_client=True,
)
)
print("Dataframe shape: ", dataframe.shape)
# CELL 2 OF 2:
import pandas as pd
dataframe.to_csv('gs://my_bucket/test_file.csv', index=False)
Run Code Online (Sandbox Code Playgroud)
此代码大约需要 7.5 分钟才能成功完成。
是否有更优化的方法来实现上面所做的事情?(这意味着更快,但也许其他方面还可以改进)。
一些附加说明:
google-cloud-storage google-bigquery google-cloud-platform google-cloud-api-gateway google-cloud-vertex-ai