用于在Google Cloud Function中的熊猫中标准化JSON文件的正确语法

时间:2019-06-24 23:01:33

标签: python json pandas api google-cloud-platform

我正在尝试从Google Cloud Storage将嵌套的JSON文件打开到Google Cloud Function中,然后将其转换为pandas数据框,以便我可以进一步处理数据。

请注意,我已经阅读了此文档 pandas.io.json.json_normalize with very nested json

..但我不认为我的文件是我所说的“非常”嵌套的文件。这是我正在使用的JSON文件的启动方式:

[{"organizations": [], "uuid": "8bdddaf7351cf0bb38f5d1503b9078c1dd294155", "thread": {"social": {"gplus": {"shares": 0},

下面是我正在使用的代码。这些要求似乎都可以。

from google.cloud import storage
import pandas as pd
import json
from pandas.io.json import json_normalize

BUCKET_NAME = 'a9000'
STORAGE_CLIENT = storage.Client()
FILE_NAME = "demo_madsen/webhose/raw/blogs-20191201-20190228-001.json"


def download_json_from_gcs():
    """Downloads/read a json file from the bucket."""
    bucket = STORAGE_CLIENT.get_bucket(BUCKET_NAME)
    blob = bucket.blob(FILE_NAME)
    contents = blob.download_as_string()
    dict = json.loads(contents.decode("utf-8"))

    df = pd.DataFrame(json_normalize(dict['organizations']))

我希望他们返回或下载结果。其余代码为:

df['engagement'] = df['thread.replies_count'] + df['thread.social.facebook.comments'] + df['thread.social.facebook.likes'] + df['thread.social.facebook.shares'] + df['thread.social.linkedin.shares'] + df['thread.social.pinterest.shares'] + df['thread.social.stumbledupon.shares'] + df['thread.social.vk.shares']

blob1 = bucket.blob("demo_madsen/webhose/raw/data02.csv")
blob1.upload_from_string(df.to_csv(index=False, header=True, encoding="utf-8"),content_type="application/octet-stream")

return

当我在Google Cloud Functions中部署该功能时,它会成功部署。

但是,当我触发函数的端点时,出现以下错误消息:

Error: could not handle the request

我被告知代码的(dict['organizations'])部分已关闭,但没有其他线索。不幸的是,我对熊猫的经验很少,主要是在Anaconda。

任何有关如何解决此问题的建议将不胜感激。

0 个答案:

没有答案