在SageMaker中解析和显示大型json文件



我在S3中有gzipped json文件,我正试图在SageMaker Studio Notebook中显示它们,如下所示:

import boto3
import gzip

s3_object = s3.Object("bucket", "path")
with gzip.GzipFile(fileobj=s3_object.get()["Body"]) as gzip_file:
print("reading s3 object through gzip stream")
raw_json = gzip_file.read()
print("done reading s3 object, about to flush")
gzip_file.flush()
print("done flushing")
print("about to print")
print(raw_json.decode("utf-8"))
print("done printing")

我的限制是它必须在内存中完成,我已经求助于在ml.m5.2xlarge实例上运行,这应该绰绰有余。

我知道IPython.display.JSONpandas.read_jsonjson.load()/json.loads(),我将内容视为一个简单的字符串来保持问题的简单性。

上述代码的(意外(输出为:

reading s3 object through gzip stream
done reading s3 object, about to flush
done flushing
about to display

在这一点上,内核状态是"忙碌",它可以保持这样几分钟,直到最后它似乎只是"放弃"而没有输出。

如果我在笔记本电脑上运行的笔记本电脑中运行完全相同的代码,它运行得很好,可以快速显示json内容。

我错过了什么?有更好的方法吗?

我的最终目的是有时在熊猫DataFrame中显示数据,有时将其显示为IPython.display.JSON,以方便查看内容

这是Studio的一个已知问题。您的json文件有多大?我建议您将其转换为熊猫DF,以便在控制台上查看。

最新更新