当前位置: 首页 > 面试题库 >

将Pandas DataFrame写入Google Cloud Storage或BigQuery

龙永思
2023-03-14
问题内容

您好,感谢您的宝贵时间和考虑。我正在Google Cloud Platform / Datalab中开发Jupyter
Notebook。我创建了一个Pandas DataFrame,并希望将此数据框架同时写入Google Cloud
Storage(GCS)和/或BigQuery。我在GCS中有一个存储区,并通过以下代码创建了以下对象:

import gcp
import gcp.storage as storage
project = gcp.Context.default().project_id    
bucket_name = 'steve-temp'           
bucket_path  = bucket_name   
bucket = storage.Bucket(bucket_path)
bucket.exists()

我已经尝试过基于Google Datalab文档的各种方法,但仍然失败。谢谢


问题答案:

请尝试以下工作示例:

from datalab.context import Context
import google.datalab.storage as storage
import google.datalab.bigquery as bq
import pandas as pd

# Dataframe to write
simple_dataframe = pd.DataFrame(data=[{1,2,3},{4,5,6}],columns=['a','b','c'])

sample_bucket_name = Context.default().project_id + '-datalab-example'
sample_bucket_path = 'gs://' + sample_bucket_name
sample_bucket_object = sample_bucket_path + '/Hello.txt'
bigquery_dataset_name = 'TestDataSet'
bigquery_table_name = 'TestTable'

# Define storage bucket
sample_bucket = storage.Bucket(sample_bucket_name)

# Create storage bucket if it does not exist
if not sample_bucket.exists():
    sample_bucket.create()

# Define BigQuery dataset and table
dataset = bq.Dataset(bigquery_dataset_name)
table = bq.Table(bigquery_dataset_name + '.' + bigquery_table_name)

# Create BigQuery dataset
if not dataset.exists():
    dataset.create()

# Create or overwrite the existing table if it exists
table_schema = bq.Schema.from_data(simple_dataframe)
table.create(schema = table_schema, overwrite = True)

# Write the DataFrame to GCS (Google Cloud Storage)
%storage write --variable simple_dataframe --object $sample_bucket_object

# Write the DataFrame to a BigQuery table
table.insert(simple_dataframe)

我使用了这个示例,并将datalab
github站点
的_table.py文件作为参考。您可以在此链接中找到其他源代码文件。datalab



 类似资料:
  • 我正在尝试用scala gatling脚本将从会话中提取的值写入csv文件,我正在提取多个字段,需要将数据写入csv中的多个列。有人能建议一下如何实施吗。

  • 在中有一个,可以将日志写入到。 我需要在中使用相同的功能,但我还没有找到这样做的选项。有人知道如何使用实现同样的效果吗?

  • 问题内容: 我有这样的事情: 而且我想使用jQuery编写元素,以使等效的HTML完全像这样: 另外,任何普通的Javascript也可以。 谢谢。 编辑 :经过更多的研究,似乎我正在寻找一个iframe的contentDocument属性的IE等效。“ contentDocument”是FF支持的W3C标准,但IE不支持。(惊喜) 问题答案: 两者都可以,您只需要针对不同的目标即可:

  • 问题内容: 我有一个要写入HttpServletResponse的InputStream。有这种方法,由于使用byte []而需要花费很长时间 我想知道在速度和效率方面,什么是最好的方法? 问题答案: 只需编写块,而不是先将其完全复制到Java内存中即可。下面的基本示例以10KB的块为单位编写。这样,您最终只能获得10KB的一致内存使用量,而不是完整的内容长度。最终用户也将更快地获取部分内容。 作

  • 问题内容: 我将如何将javafx.scene.image.Image图像写入文件。我知道您可以在BufferedImages上使用ImageIO,但是有什么方法可以使用javafx图像吗? 问题答案: 差不多3年后,我现在有知识去做并回答这个问题。是的,原始答案也是有效的,但它涉及到先将图像转换为BufferedImage,我理想上想完全避免摆动。虽然这确实会输出图像的原始RGBA版本,足以满足

  • 问题内容: 我正在尝试从Http帖子回复文件写入 sdcard 上的文件。一切正常,直到检索到字节数据数组为止。 我尝试在清单中设置权限,并尝试了许多在网上找到的教程的不同组合。 我所能找到的只是使用活动的方法,但是我的应用程序如何通过线程来写入文件。具体来说,当必须写入文件时,会从另一个线程中调用一个线程,因此即使我尝试了活动对象,也无法使用它。 该应用程序已经走了很长一段路,我无法更改当前编写