Я пытаюсь открыть вложенный файл JSON из облачного хранилища Google в облачную функцию Google и преобразовать его в фрейм данных pandas, чтобы я мог обрабатывать данные дальше.
Обратите внимание, что я прочитал этот документ
pandas.io.json.json_normalize с очень вложенным 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 она успешно развертывается.
Однако, когда я запускаю конечную точку функции, я получаю следующее сообщение об ошибке:
Error: could not handle the request
Мне сообщили, что часть кода (dict['organizations'])
отключена, но других подсказок нет. К сожалению, у меня минимальный опыт работы с пандами, в основном в Анаконде.
Буду очень признателен за любые советы по устранению неполадок.