我在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.JSON
、pandas.read_json
和json.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,以便在控制台上查看。