数据实验室中 %% 存储魔术功能的唯一内容类型是文本吗

Is text the only content type for %%storage magic function in datalab

我正在使用他的新云数据实验室并尝试使用魔术函数 %%storage 将二进制文件保存到 GCS 存储桶。例如,我喜欢保存 PANDAS 数据帧(用于将其作为 pickle 文件)和大部分 SciKitLearn 模型对象(训练后)。

我尝试了一些使用 %%storage 的方法,但没有成功。在我看来,%%storage 仅适用于文本数据。这是正确的吗?例如,我对 CSV 文件没有任何问题。我能提供的参数%%storage write只有bucket对象和要保存的变量

我知道数据实验室中包含的笔记本旨在作为数据实验室文档。但平心而论,用礼貌的话说,该文档非常糟糕。此外,当光标位于单元格内的代码上时,代码的嵌入式文档(按 shift+tab)也非常差。

如果你们有任何其他文档来源,请告诉我。我尝试仔细阅读 git 中心代码,但无法访问它。

在我看来,添加魔法函数功能应该可以使临时数据分析等使用笔记本变得更容易。但是,由于这种糟糕的实施和糟糕的文档,它违背了目的并使其更加繁琐。实际上,如果您是这方面的新手,一个好的建议是直接去学习 python 的 gcloud API 并且不要为给定级别的数据实验室魔术函数和数据实验室 API 而烦恼成熟度。

这对我有用,可以在 GCS 上保存 scikit-Learn 模型。不确定这是否是最有效的方法,但我已经测试过并且有效。使用来自 s

的调用对模型对象进行 Pickled
  1. 设置您的存储桶。 classifier 是 scikit-learn 对象。

    from gcloud import storage as gcs
    bucket = gcs.Client().get_bucket('name')
    file_msg = 'path_to_file/filename.pkl'
    
  2. 保存到存储桶

    # serialize contents 
    contents = BytesIO() pkl.dump(classifier, contents)
    
    # upload 
    file_blob = bucket.blob(file_msg)
    file_blob.upload_from_string(contents.getvalue(),
    content_type='sklearn/pickle')
    
    # Tested downloading file to local machine and `pickle.load(open(filename), 'rb')` and it loads fine.
    
  3. 加载为对象

    # set up bucket (already done)
    
    # set up blob for file
    file_blob = bucket.blob(file_msg)
    
    # get serialized contents
    contents = BytesIO(file_blob.download_as_string())
    
    # read into msgpack under pandas
    model = pkl.load(contents)